我有一个Activity
,在这里我依次加载了3fragments
FragmentA
FragmentB
FragmentC
流是这样的我已经使用添加片段一个在另一个之上
开始-----〉* 加载 * FragmentA
----〉* 加载 * FragmentB
----〉加载FragmentC
* 我现在要做的是 *
现在假设FragmentC
是显示的顶部片段
我想从堆栈中找到FragmentA
并显示它,而不是重新创建fragmentA
- 我用来添加fragmentA的代码是例如:*
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();
}
5条答案
按热度按时间luaexgnf1#
看看FragmentManager.getBackStackEntryAt方法,从那里你可以回到你历史的任何片段...
eanckbw92#
循环返回堆栈条目,同时,如果你发现任何通过id或标签匹配的片段,只要弹出包含片段A的名称/标签的返回堆栈,这样片段A就被显示出来,而不是再次添加。
0ejtzxu13#
按Tag检索片段的示例代码如下所示
如果它不为null,则可以在容器中重用它
mv1qrgav4#
您正在为事务提供标记
fragmentTransaction.addToBackStack(FragmentA.class.getSimpleName());
,您可以使用相同的标记在回栈中查找片段,在创建新片段之前,使用片段管理器上的findFragmentByTag
检查回栈中的片段,如果存在,则该方法返回片段,否则为空ufj5ltwl5#
试试看!