我有一个使用 DrawerLayout
的应用程序,抽屉中的每个项目都会加载一个 Fragment
。结构如下:
- 新闻 -> 新闻故事
- 照片 -> 图库 -> 照片
- Activity -> Activity
- 目录 -> 用户类型 -> 用户配置文件
每个顶层都是抽屉
中的一个项目,点击一个将带你到那个 fragment ,你可以通过在堆栈上添加额外的 fragment 来更深入地进入那个部分,例如从照片导航到图库,再导航到该图库中的照片。
当我需要将每个部分的导航作为单独的堆栈进行管理时,这会让人感到困惑。在 iOS
上,我会为每个部分使用一个 UINavigationController
,这样我就可以单独管理它们。但是在 Android
上我不知道该怎么做。这几乎就像我需要多个 Fragment Manager
实例一样。如果没有这个,我觉得我会在以下情况下遇到问题:
- 用户深入新闻堆栈然后切换到照片,他们导航到该堆栈的深处,但想返回到他们在新闻部分中的位置。他们怎么能回到那个堆栈?然后,导航回新闻堆栈?
这似乎是 Android 的主要设计问题,除非我遗漏了什么。关于如何解决这个问题的任何想法?
编辑:
基本上我想要他们在 Google I/O 上展示的东西:
最佳答案
我刚刚用这种设计构建了一个应用程序。当用户处于“新闻”或“新闻”的任何子类别时,我只是不断向堆栈添加 fragment 。如果用户导航到“照片”,我将使用以下命令从堆栈中弹出所有 fragment :
getFragmentManager().popBackStackImmediate(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);
然后再次开始添加到堆栈中。我不确定这是否是“正确的方式”,但对我来说效果很好。我只会记录他们在“新闻”中查看的最后一个 fragment ,并在他们返回“新闻”时恢复它,如果这是您正在寻找的行为的话。
我使用一个 Activity 很好地管理了多个类别/子类别。
关于android - 使用 Fragment Manager 和 DrawerLayout 管理多个层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170108/