我的应用在根 Activity 的布局中使用新的 Navigation Drawer。抽屉中的每个项目都是一个 fragment (就像示例项目演示的那样)。但是,我有更深入的导航,并且指南指出, “如果你有特别深的分支,导航到你的应用程序的顶层可能会变得重复和麻烦单独向上和返回。由于抽屉导航可以从应用程序的任何地方访问,导航到顶层更快更高效,,” 这意味着抽屉应该可以通过从屏幕左侧滑动访问,几乎可以在应用程序的任何地方访问(例如,请参阅播放音乐),而不仅仅是在根 Activity 中。
由于我的更深层次的导航包括新的 Activity,而不仅仅是更多的 fragment 堆叠,我如何仍然应用我的主抽屉导航来更快地导航到整个应用程序的顶部项目( fragment )?
最佳答案
谷歌在解释这个方面肯定做得很差,因为我自己花了一段时间才找到它。处理此问题的正确方法是使用 FragmentTransactions在您现有的抽屉导航布局中添加/替换容器,特别是 addToBackStack()
告诉 Android 将其视为导航事务的方法。
我必须从他们的文章 Providing Proper Back Navigation 中拼凑出这些内容这解释了它是如何为 Fragments 完成的。一个很酷的消息是您不必在彼此之上“添加” fragment ,您可以只替换 Activity fragment 。当用户点击“后退”时,Android 的 FragmentManager将弹出交易并将其反转回之前的状态。
此外,您可能还想调用 setTransition(int transit)
在你的交易中让它像 Activity 一样动画。这是我在项目中使用的示例:
getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.container, newFragment);
.addToBackStack(null);
.commit();
从这里点击“返回”将执行相反的动画并返回到事务发生之前的前一个状态。
我知道我迟到了,但希望它能帮助别人!
关于深度导航中的 Android 抽屉导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17266229/