【发布时间】:2012-10-05 03:58:15
【问题描述】:
我已扩展 DialogFragment 并从 Fragment 调用它(使用支持库,例如 android.support.v4.app.Fragment)
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();
行时,应用程序崩溃并出现空指针异常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的fragment中存在的doPositiveClick()方法?
注意,android 开发者网站显示了一个示例 http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog,它使用 ((FragmentAlertDialog)getActivity()).doPositiveClick(); 行,但我是从 Fragment 调用的,而不是从活动。
谢谢,
【问题讨论】:
标签: android android-dialogfragment