【问题标题】:Android - show fragment within a dialogAndroid - 在对话框中显示片段
【发布时间】:2014-03-04 19:00:20
【问题描述】:

我正在开发一个使用片段作为导航流程基础的安卓应用。 在某些时候,我遇到了一个我无法解决的问题。

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

现在,我需要在对话框中显示其中一个片段,例如弹出窗口。

我发现了神奇的类 DialogFragment 可以解决问题,但问题是片段不能从它扩展,因为它已经从 NavigationFragment 扩展。

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

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

谢谢!

【问题讨论】:

  • 也许您可以从 DialogFragment 扩展并实现导航控制器。无论如何,如果您要在每个子类中覆盖导航命令,这将是最佳选择。
  • 不幸的是,我没有覆盖子类中的命令。 NavigationFragment 覆盖片段中的 onViewCreated,并具有一个侦听器实例以与导航控制器通信。我正在考虑制作一个 NavigationDialogFragment 的选项,它扩展了 DialogFragment 并实现了这些功能。这不是我想要的,因为我需要修改导航控制器。

标签: android fragment fragmentmanager


【解决方案1】:

您遇到的问题根本不是问题。 你应该让NavigationFragment 扩展DialogFragment,然后只在onCreate 中调用setShowsDialog(true) 来显示那些你想显示为对话框的人。来自helpDoc

setShowsDialog

控制此片段是否应显示在对话框中。如果没有设置,onActivityCreated(Bundle)中不会创建Dialog,并且 因此,片段的视图层次结构将不会添加到其中。这允许 您可以将其用作普通片段(嵌入在其内部 活动)。

这通常根据片段是否与传递给的容器视图 ID 相关联为您设置 FragmentTransaction.add(int, Fragment)。如果片段添加了 一个容器,setShowsDialog 将被初始化为 false;否则, 会是真的。

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

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多