gpt4 book ai didi

Android 如何从 DialogFragment 正按钮单击调用 fragment 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:50 26 4
gpt4 key购买 nike

我已经扩展了 DialogFragment 并从 fragment 调用它(使用支持库,例如 android.support.v4.app.Fragment)

Fragment 实现了以下包含 doPositiveClick() 方法的接口(interface)。

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): at 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 而不是 Activity 调用的。

谢谢,

最佳答案

((FragmentAlertDialog)getActivity()).doPositiveClick(); 行中, Activity 正在实现接口(interface),以便您可以将 Activity 转换为接口(interface)类。

在您的情况下,您希望将目标 fragment 转换为接口(interface),因此您的目标 fragment 必须实现该接口(interface),否则它会给您 ClassCastException。但是您得到的是 NullPointerExeception,因此请确保 getTargetFragment() 方法不会返回 null 对象。

关于Android 如何从 DialogFragment 正按钮单击调用 fragment 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12739267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com