【问题标题】:Managing multiple hierarchies using Fragment Manager and DrawerLayout使用 Fragment Manager 和 DrawerLayout 管理多个层次结构
【发布时间】:2014-08-06 21:01:32
【问题描述】:

我有一个使用 DrawerLayout 的应用程序,抽屉中的每个项目都将加载一个 Fragment。结构如下:

  • 新闻 -> 新闻故事
  • 照片 -> 图库 -> 照片
  • 事件 -> 事件
  • 目录 -> 用户类型 -> 用户配置文件

每个顶级都是Drawer 中的一个项目,点击一个将带您到该片段,您可以通过在堆栈上添加其他片段来更深入地进入该部分,例如从照片导航到图库中的照片。

当我需要将每个部分的导航作为单独的堆栈进行管理时,这会变得令人困惑。在iOS 上,我会为每个部分使用UINavigationController,以便我可以单独管理其中一个。但是在Android 我不知道该怎么做。这几乎就像我需要有多个 Fragment Manager 实例。如果没有这个,我觉得我会在以下情况下遇到问题:

  • 用户深入到新闻堆栈然后切换到照片,他们导航到该堆栈深处,但想要返回到他们在新闻部分中的位置。他们怎么能回到那个堆栈?并且,导航回新闻堆栈?

这似乎是 Android 的一个主要设计问题,除非我遗漏了什么。关于如何解决这个问题的任何想法?

编辑:

基本上我想要他们在 Google I/O 上展示的内容:

https://www.youtube.com/watch?v=XpqyiBR0lJ4

【问题讨论】:

    标签: android android-fragments navigation-drawer android-listfragment drawerlayout


    【解决方案1】:

    我刚刚使用这种设计构建了一个应用程序。当用户在“新闻”或“新闻”的任何子类别中时,我只是不断地向堆栈添加片段。如果用户导航到“照片”,我会从堆栈中弹出所有片段:

    getFragmentManager().popBackStackImmediate(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);
    

    然后再次开始添加到堆栈中。我不确定这是否是“正确的方法”,但对我来说效果很好。如果这是您正在寻找的行为,我只会记录他们在“新闻”中查看的最后一个片段并在他们返回“新闻”时恢复它。

    我使用一个 Activity 就可以很好地管理多个类别/子猫。

    【讨论】:

    • 是的,但是如果他们进入新闻 3 级,他们进入照片并进入 2 级,难道没有办法回到新闻中的 3 级吗?
    • 如果这是您正在寻找的行为,您可能需要为每个类别管理一个 FragmentActivity。 IMO 如果我离开“新闻”然后返回,我希望点击“新闻”登陆页面,而不是我上次访问时查看的最后一页。
    • 但是把它想象成浏览器中的标签。如果你有两个打开的选项卡 1,你已经导航到不同的地方,你切换到选项卡 2 做某事。但是当您返回选项卡 1 并将其重置回您开始的位置时?那会非常奇怪,会让用户感到沮丧。
    • 我认为抽屉中的类别标签应该代表一个非常具体的地方。如果您在抽屉中有子类别,您会希望转到该子类别,而不是您从该子类别导航到的位置。话虽如此,只要您的猫/子猫代表一个特定的地方,您的导航就可以通过一个管理器轻松维护。
    • 我将您的解决方案与android.support.design.widget.TabLayout 一起使用,[到目前为止] 它运行良好。
    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 2011-11-21
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多