android 选项卡片段导航

android tabs fragment navigation

我想问你关于 android 中一些不标准的导航模式。所以,我的问题如下所述。如果您没有答案或有些细节不明白,请不要减分。只需写评论,我就会改正我的东西。我不使用 ViewPager 或 TabHost。请查看图片以了解我预期的导航模型:

所以,我们 activity 有 3 个选项卡。所有选项卡都必须包含片段堆栈。第一个选项卡只有一个片段,因此没有后台逻辑。但是另外两个选项卡必须具有带有后退方式的片段逻辑。用户也可以随时切换所有标签。

为了实现标签,我使用了 BottomBar library

我尝试使用 Stack[] 数组实现我的解决方案。并手动更改片段。但是我收到内存泄漏。经过多次操作,我明白这里无法找到解决方案。所以,我想问一下,如何使用 Android native backStack 实现解决方案。或任何其他解决方案..等待您的答复。谢谢

您可以使用以下代码将片段添加到返回堆栈。

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)