3

我的应用在根 Activity 的布局中使用了新的 Navigation Drawer。抽屉中的每个项目都是一个片段(就像示例项目演示的那样)。然而,我有更深的导航,并且指南指出,“如果你有特别深的分支,导航到你的应用程序的顶层可能会变得重复和繁琐,单独使用 Up 和 Back。因为导航抽屉可以从应用程序的任何地方访问, 导航到顶层更快更高效”,这意味着抽屉应该可以通过从屏幕左侧的滑动访问应用程序中的几乎任何位置(参见播放音乐示例),而不仅仅是在根活动。

由于我的更深层次的导航包括新的活动,而不仅仅是堆叠的更多片段,我如何仍然应用我的主导航抽屉来更快地导航到整个应用程序中的顶部项目(片段)?

4

1 回答 1

0

谷歌在解释这个方面确实做得很差,因为我自己花了一段时间才找到它。处理这个问题的正确方法是使用FragmentTransactions在现有的导航抽屉布局中添加/替换容器,特别是addToBackStack()告诉 Android 将其视为导航事务的方法。

我不得不从他们的文章“提供正确的后退导航”中将其拼凑起来,该文章解释了它是如何为 Fragments 完成的。一个很酷的花絮是您不必在彼此之上“添加”片段,您只需替换活动的片段即可。当用户点击“返回”时,Android 的FragmentManager将弹出事务并将其反转回之前的状态。

此外,您可能还希望调用setTransition(int transit)您的事务以使其像活动一样进行动画处理。这是我在项目中使用的示例:

getFragmentManager().beginTransaction()
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    .replace(R.id.container, newFragment);
                    .addToBackStack(null);
                    .commit();

从此点击“返回”将执行相反的动画并返回到事务发生之前的先前状态。

我知道我迟到了,但希望它可以帮助别人!

于 2014-10-29T22:57:11.577 回答