DialogFragment のダイアログを返すために使用される AlertDialog のメソッド setPositiveButton() 内の Fragment からメソッドを呼び出したいのですが、それはできません。
Fragment を拡張する Test という名前のクラス内にメソッド doSomething() があります。このクラスの内部には、DialogFragment を拡張する内部クラスがあります。メソッド onCreateDialog で問題が発生します。コードを見てください:
public class Test extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.activity_main, null);
return view;
}
public static class SelectDeviceDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
((Test) getTargetFragment()).doSomething();
}
}).create();
}
}
private void doSomething() {}
}
DialogFragment と Fragment は、lib android.support.v4 からのものです。
Test へのキャストができないため、エラーが発生します。その場合、メソッド doSomething をどのように呼び出すことができますか?
ありがとう。