我想问你关于android中的一些非标准导航模式。所以,我的问题描述如下。如果您没有答案或某些细节不明白,请不要减去。只是写评论,我纠正我的东西。我不使用ViewPager或TabHost。请参阅图片以了解我预期的导航模型:
所以,我们有3个标签的活动。所有选项卡必须包含一堆片段。第一个选项卡只有一个片段,因此没有后端逻辑。但是另外两个选项卡必须具有回传方式的片段逻辑。用户也可以随时切换所有标签。
要实施标签,我使用了BottomBar library。
我尝试使用Stack []数组实现我的解决方案。并手动更改片段。但我收到内存泄漏。经过多次操作,我理解这里无法找到解决方案。所以,我想问一下,我如何使用Android native backStack实现解决方案。或任何其他解决方案..等待你的答案。感谢。
答案 0 :(得分:1)
您可以使用以下代码将碎片添加到后台堆栈。
fragmentTransaction.add(id, fragment, Tag(I usually do fragment.getclass().getName())).addToBackStack(backstackName(I usually do fragment.getclass().getName()))
添加第二个片段时,请使用以下repleaceFragentMethod。
private void replaceFragment(android.support.v4.app.Fragment fragment) {
String backStateName = fragment.getClass().getName();
String fragmentTag = backStateName;
FragmentManager manager = getSupportFragmentManager();
manager.executePendingTransactions();
boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null) { //fragment not in back stack, create it.
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.frament_container, fragment, fragmentTag);
ft.addToBackStack(backStateName);
ft.commit();
}
}
查找内存泄漏使用LeakCanary(https://github.com/square/leakcanary)