在Fragment中创建AlertDialog

时间:2013-08-15 11:42:11

标签: android alertdialog android-alertdialog

所以我在片段中创建对话框时遇到错误

以下是代码:

     public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("title");

        return new AlertDialog.Builder(getActivity())
                .setIcon(R.drawable.logo)
                .setTitle(R.string.groupDetails_rename)
                .setPositiveButton(R.string.ok,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {
                                ((GroupDetailsFragment)  getSupportFragmentManager())
                                        .doPositiveClick();
                            }
                        }).create();
    }

我在((GroupDetailsFragment) getSupportFragmentManager())我应该写什么而不是getSupportFragmentManager()

时出错

2 个答案:

答案 0 :(得分:2)

我认为您的错误与您使用的Fragment有关。更具体地说,这取决于你使用的天气

  • android.app.Fragment - >需要getFragmentManager()

  • android.support.v4.Fragment - >需要getSupportFragmentManager()

检查GroupDetailsFragment的.java文件,看看你实际导入的Fragment类。

此外,您的错误可能与您的Activity不是FragmentActivity的子类有关。请检查您的活动是否扩展了FragmentActivity

<强>更新

如果您在Dialog中获取FragmentManager时遇到问题,那是因为“getFragmentManager()”是FragmentActivity的一种方法,因此不能在Dialog中使用。要获取活动,只需调用 getActivity(),然后获取FragmentManager:

getActivity().getFragmentManager();

或获取SupportFragmentManager()

getActivity().getSupportFragmentManager();

答案 1 :(得分:2)

GroupDetailsFragment f = (GroupDetailsFragment) getSupportFragmentManager().findFragmentByTag("tag");

f.doPositiveClick();
当您调用“show()”

时,

“tag”将被传递

getSupportFragmentManager-&GT; v4的 getFragmentManager-&GT; NATIV