【问题标题】:android tabs fragment navigationandroid标签片段导航
【发布时间】:2016-12-09 02:47:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android android-fragments tabs android-navigation


    【解决方案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)

    【讨论】:

    • 感谢您的回答。 Canary lib 没有按预期工作:github.com/square/leakcanary/issues/660 我尝试过像您发布的那样,但没有 manager.executePendingTransactions();我按你说的试试,结果写在这里。
    • 我也通过 Eclipse MAT 发现了我的问题,因此,系统不想在我的片段中完成某些对象。我不明白为什么。所以,我们必须只使用内部 ft.addToBackStack 和片段堆栈?
    • 如果您想再次使用片段,最好将其添加到 backstack 并检索相同的片段,而不是再次添加相同的片段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    相关资源
    最近更新 更多