我正在开发一个使用片段作为导航流基础的Android应用程序。 在某些时候,我遇到了一个我无法解决的问题。
所有片段都从一个基类扩展而来,该基类具有导航管理器所需的一些属性,称为NavigationFragment,它从Fragment扩展。
现在,我需要在Dialog上显示一个像弹出窗口一样的片段。
我找到了令人惊讶的类DialogFragment来完成这个技巧,但问题是片段无法从此扩展,因为它已经从NavigationFragment扩展。
我不想让NavigationFragment成为DialogFragment,因为它们中只有少数会显示为弹出窗口。
你知道替代方案吗?像一个可以包含片段的对话框,还是别的东西?
谢谢!
答案 0 :(得分:0)
你遇到的并不是真正的问题。
您应该NavigationFragment
延长DialogFragment
,然后只在onCreate
中为{{1}}调用您想要显示为对话框的人。来自setShowsDialog(true)
,
setShowsDialog
控制是否应在对话框中显示此片段。如果未设置,则不会在onActivityCreated(Bundle)中创建对话框 因此不会将片段的视图层次结构添加到其中。这允许 你改为将它用作普通片段(嵌入其内部) 活性)。
这通常是根据片段是否与传递给的容器视图ID相关联而设置的 FragmentTransaction.add(int,Fragment)。如果片段添加了 一个容器,setShowsDialog将被初始化为false;除此以外, 这将是真的。
有关如何使用此功能的更详细说明,请参阅helpDoc或更好的官方文档(Android fragment show as dialogfragment or usual fragment)。