私はDialogFragmentを拡張し、Fragmentから呼び出しています(サポートライブラリを使用しています.android.support.v4.app.Fragmentなど)
フラグメントは、doPositiveClick() メソッドを含む次のインターフェイスを実装します。
public interface CustomFieldsFragmentAlertDialog {
public abstract void doPositiveClick();
}
ダイアログを表示するには、次のように呼び出します。
CustomFieldsDialogFragment dialog = CustomFieldsDialogFragment.newInstance();
dialog.show(getFragmentManager(), "fragmentDialog");
これが私のDialogFragmentクラスです
public static class CustomFieldsDialogFragment extends DialogFragment{
public static CustomFieldsDialogFragment newInstance() {
CustomFieldsDialogFragment frag = new CustomFieldsDialogFragment();
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Title");
builder.setPositiveButton(posButtonText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((CustomFieldsFragmentAlertDialog)getTargetFragment()).doPositiveClick();
}
});
}
return builder.create();
}
}
行((CustomFieldsFragmentAlertDialog)getTargetFragment()).doPositiveClick();を実行しようとすると、null ポインター例外でアプリケーションがクラッシュします。
10-05 13:45:23.550: E/AndroidRuntime(29228): java.lang.NullPointerException 10-05 13:45:23.550: E/AndroidRuntime(29228): com.company.app.CustomFieldsFragment$CustomFieldsDialogFragment$1.onClick で(CustomFieldsFragment.java:194)
CustomFieldsFragmentAlertDialog を呼び出すフラグメントに存在する doPositiveClick() メソッドを呼び出すにはどうすればよいですか?
注、Android 開発者サイトには、行((FragmentAlertDialog)getActivity()).doPositiveClick();を使用するhttp://developer.android.com/reference/android/app/DialogFragment.html#AlertDialogの例が示されています。しかし、アクティビティではなくフラグメントから呼び出しています。
ありがとう、