1

所以我在片段中创建对话框时出错

这是代码:

     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()

4

2 回答 2

2

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

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

或者

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

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

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

更新:

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

getActivity().getFragmentManager();

或获取 SupportFragmentManager()

getActivity().getSupportFragmentManager();
于 2013-08-15T11:57:06.617 回答
2
GroupDetailsFragment f = (GroupDetailsFragment) getSupportFragmentManager().findFragmentByTag("tag");

f.doPositiveClick();

当你调用“show()”时,“tag”将被传递

getSupportFragmentManager->v4 getFragmentManager->nativ

于 2013-08-15T11:58:42.607 回答