android - 使用 Fragment Manager 和 DrawerLayout 管理多个层次结构

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

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

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

每个顶层都是抽屉中的一个项目,点击一个将带你到那个 fragment ,你可以通过在堆栈上添加额外的 fragment 来更深入地进入那个部分,例如从照片导航到图库,再导航到该图库中的照片。

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

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

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

编辑:

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

enter image description here https://www.youtube.com/watch?v=XpqyiBR0lJ4

最佳答案

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

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

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

我使用一个 Activity 很好地管理了多个类别/子类别。

关于android - 使用 Fragment Manager 和 DrawerLayout 管理多个层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170108/

相关文章:

java - 从 Fragment 启动 Activity 抛出 ClassNotFoundException

android - 半透明状态栏在抽屉导航上保持其半透明阴影

java - 数据库中的旧数据不断被新数据替换

Android-如何从 Activity 运行 bash 脚本

android - 了解自定义包的 XML 属性

onCreateView() 中抽屉导航中的 Android Google Map v2

android - fragment 有时会重叠 - Android

android - 在旧版 android 中使用抽屉导航

Android:带有抽屉导航 fragment 的偏好 fragment

android - API 19发生 Activity 崩溃