我的应用在根Activity的布局中使用了新的Navigation Drawer。抽屉中的每个项目都是一个片段(就像示例项目所示)。但是,我有更深入的导航,指南说明, “如果你有特别深的分支,导航到你的应用程序的顶层可能会变得重复和繁琐单独的向上和向后。由于导航抽屉可以从应用程序的任何地方访问,导航到顶层更快,更有效” 暗示抽屉应该可以通过从屏幕左侧几乎在应用程序的任何位置轻扫来访问(请参阅播放音乐中的示例),而不仅仅是在根活动中。
由于我更深入的导航包括新的活动,而不仅仅是堆叠的更多碎片,我如何仍然应用我的主导航抽屉,以便更快地导航到我的应用程序中的顶级项目(片段)?
答案 0 :(得分:0)
谷歌在解释这个问题上肯定做得不好,因为我花了一些时间才找到它。处理此问题的正确方法是使用FragmentTransactions在现有导航抽屉布局中添加/替换容器,尤其是addToBackStack()
方法,以告知Android将其视为导航事务。
我不得不从他们的文章Providing Proper Back Navigation中将它拼凑在一起,这解释了它是如何为碎片做的。一个很酷的想法是你不必在彼此之上“添加”碎片,你可以只替换活动碎片。当用户点击“返回”时,Android的FragmentManager将弹出交易并将其反转回之前的状态。
此外,您可能还想在您的交易上调用setTransition(int transit)
,以使其像活动一样动画。以下是我在项目中使用的示例:
getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.container, newFragment);
.addToBackStack(null);
.commit();
点击“返回”将执行相反的动画并返回事务发生前的先前状态。
我知道我迟到了,但希望它有所帮助!