2014-03-04 37 views
0

我正在开发一个使用片段作为导航流基础的android应用程序。 在某种程度上,我陷入了一个我无法解决的问题。Android - 在对话框中显示片段

所有片段都从基类中扩展而来,该基类具有导航管理器所需的一些属性,称为NavigationFragment,它从Fragment扩展而来。

现在,我需要在对话框中显示弹出式窗口之一。

我发现了令人惊讶的DialogFragment类,它可以做到这一点,但问题是片段无法从此扩展,因为它已经从NavigationFragment扩展。

我不想让NavigationFragment成为一个DialogFragment,因为只有少数人会显示为弹出窗口。

你知道这个的替代吗?像一个可以包含片段的对话框或其他东西?

谢谢!

+0

也许你可以从DialogFragment扩展并实现一个导航控制器。无论如何,如果您重写每个子类中的导航命令,这将是最好的选择。 – dberm22

+0

不幸的是,我不是覆盖子类中的命令。 NavigationFragment覆盖片段中的onViewCreated,并有一个侦听器实例与导航控制器进行通信。我正在考虑制作NavigationDialogFragment的选项,该选项扩展了DialogFragment并实现了这些功能。这不是我想要的,因为我需要修改导航控制器。 – Diego

回答

0

你碰到过的并不是真正的问题。 您应该制作NavigationFragment扩展DialogFragment,然后只需拨打setShowsDialog(true)onCreate那些您想要显示为对话框的人。从helpDoc

setShowsDialog

控制是否该片段应在对话框中显示。如果未设置,则不会在onActivityCreated(Bundle)中创建对话框,因此不会将片段的视图层次添加到该对话框中。这允许您将 用作普通片段(嵌入在其 活动中)。

这通常是基于片段是否与传递给 FragmentTransaction.add(int,Fragment)的容器视图ID相关联而设置的。如果该片段与 一个容器一起添加,setShowsDialog将被初始化为false;否则, 这将是事实。

Android fragment show as dialogfragment or usual fragment,或者更好的是,关于如何使用此功能的更详细说明的官方文档(http://developer.android.com/reference/android/app/DialogFragment.html#DialogOrEmbed)。