首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在后台堆栈中找到片段并在android中显示

如何在后台堆栈中找到片段并在android中显示
EN

Stack Overflow用户
提问于 2018-01-30 05:51:35
回答 5查看 628关注 0票数 0

我有一个Activity,在这里我一个接一个地加载3 fragments

  • FragmentA
  • FragmentB
  • FragmentC

流就像这个,我在另一个上添加了一个片段

Start-Activity

我现在想做的是:

现在假设现在FragmentC是显示的最上面的片段

我想从堆栈中找到FragmentA,只需要显示它,而不是再次创建一个fragmentA

例如,我用来添加fragmentA的代码如下:

代码语言:javascript
复制
            Fragment fragment = null;
            FragmentTransaction fragmentTransaction = null;
            fragment = new FragmentA();
            fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.addToBackStack(FragmentA.class.getSimpleName());
            fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
            fragmentTransaction.add(R.id.container, fragment, FragmentA.class.getSimpleName());

            if(fragment!=null && fragmentTransaction!=null){
                fragmentTransaction.commitAllowingStateLoss();
            }
EN

回答 5

Stack Overflow用户

发布于 2018-01-30 05:57:52

查看FragmentManager.getBackStackEntryAt方法,您可以从那里返回历史记录的任何片段(…)。

票数 0
EN

Stack Overflow用户

发布于 2018-01-30 06:07:07

循环遍历后堆栈条目,同时,如果您通过id或标记找到任何匹配的片段,只需弹出包含片段A的名称/标记的back堆栈,以便只显示片段A,而不是再次添加。

票数 0
EN

Stack Overflow用户

发布于 2018-01-30 06:13:17

您将一个标记fragmentTransaction.addToBackStack(FragmentA.class.getSimpleName());给事务,您可以使用相同的标记在后台查找片段,在创建新的框架之前,使用片段管理器上的findFragmentByTag检查该片段的逆堆栈,如果它存在,则该方法返回该片段,否则为null。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48514715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档