这可能相当明显,但我无法得到它。
我试图通过扩展DialogFragment
来使用suggested way of creating dialogs。现在,问题是,我不知道如何调用它。文档说明:
DialogFragment newFragment = new FireMissilesDialogFragment();
newFragment.show(getSupportFragmentManager(), "missiles");
但是我的Activity没有扩展FragmentActivity(并且由于我的应用程序的设计,它无法扩展它),因此无法调用getSupportFragmentManager()
。
对此有何解决方法? 我想跳过创建对话框的弃用方法。
答案 0 :(得分:2)
答案是否定的。
FragmentActivity(以及它的变体)是支持FragmentManager和Fragments的那些。
您可能会相信的常见解决方案“并且由于我的应用程序的设计,它无法扩展它”
答案 1 :(得分:0)
例如,您可以创建一个扩展DialogFragment的类并像这样调用它:
_dialogFiltre = FragmentDialog.newInstance(R.string.tle_dialog_filter, this);
_dialogFiltre.setValidDialogListener(this);
_dialogFiltre.setCancelable(false);
_dialogFiltre.show(getSupportFragmentManager(), null);
方法新实例:
public static DialogFilter newInstance(int title, Context context) {
FragmentDialog dialog = new FragmentDialog();
Bundle args = new Bundle();
args.putInt("title", title);
dialog.setArguments(args);
dialog._context = context;
return dialog;
}
如果您不在FragmentActivity中,我看不到任何解决方案。为什么您的应用程序设计不允许您使用FragmentActivity?
答案 2 :(得分:-1)
您可以直接在getSupportFragmentManager();
上调用FragmentActivity
,但不能在Fragment
本身调用getSupportFragmentManager();
。因此,要调用FragmentActivity
您可以执行的操作首先获得getSupportFragmentManager();
并通过该调用FragmentActivity
。因此,当您获得getActivity().getSupportFragmentManager();
时,您可以将此函数称为:
getActivity()
此处FragmentActivity
返回与您Fragment
相关联的DialogFragment
。
你做的是什么
1.首先,您已创建自定义DialogFragment
类的实例
2.你正在显示那个对话框。
现在,您已经创建了自定义DialogFragment newFragment = new FireMissilesDialogFragment();
newFragment.show(newFragment.getActivity().getSupportFragmentManager(), "missiles");
的实例,为什么不使用它来检索片段管理器的支持。所以你能做的是:
FragmentActivity
这样做会让newFragment
与FragmentActivity
以及您getSupportFragmentManager();
{{1}}的{{1}}相关联。
不幸的是我没有测试过,但这可能有用。试一试,告诉我们。