我知道我可以使用Fragment
并将其添加到后台堆栈中,如下所示:
Fragment fragment = MyFragment.newInstance();
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_holder, fragment).addToBackStack("my_fragment").commit();
然后我可以处理onBackStackChanged
中的更改:
@Override
public void onBackStackChanged() {
boolean hasBackStack = getSupportFragmentManager().getBackStackEntryCount() > 0;
handleBackStackChanges(hasBackStack);
}
但我有一个唠叨的问题是我是否。
这个问题的最初原因是我希望实现持久性导航抽屉。即使导航抽屉图标(汉堡包图标)不存在,也可以在应用程序内的任何位置使用,并从屏幕左边缘轻扫。
这让我有两个选择;首先,我可以拥有一个Activity
个导航抽屉并托管所有Fragments
,或者我可以拥有多个Activities
,每个onBackStackChanged
都包含一个导航抽屉。
最初我被第一个选项所吸引,考虑到navigation drawer sample使用每个抽屉选项的片段。此方法还允许我在public void handleBackStackChanges(boolean hasBackStack) {
ObjectAnimator.ofFloat(mDrawerArrow, "progress", hasBackStack ? 0 : 1).start();
...
}
:
MainActivity
但样本基本上是一个平坦的"应用程序,它不会处理任何后备堆栈更改(除了返回Activity
,它没有导航抽屉)。经过进一步的开发,我遇到了使用单Toolbar
的一些困难。特别是在处理方向更改时,以及Activities
内的更改。
所以现在我认为使用多个Activity
可能更简单。每个NavigationDrawerActivity
都会扩展自定义MainAcitivity
。每个导航抽屉项Fragment
都有一个Activity
。然后,每个后续Fragments
(从MainActivity
中的NavigationDrawer
之一调用)将拥有自己的Activity
,并引用原始(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4}
导航抽屉项{ {1}}在。
我可以看到这条路线也出现了自己的问题。处理导航抽屉图标动画,并在从抽屉中选择项目时处理后堆栈。
我的问题基本上是这样的:有没有人遇到过这些问题,是否有更具体的解决方案?在选择一个选项而不是另一个选项时,是否存在可能遇到的问题(性能相关或其他方面)?