我有一个Activity,在这里我一个接一个地加载3 fragments
FragmentAFragmentBFragmentC流就像这个,我在另一个上添加了一个片段
Start-Activity
我现在想做的是:
现在假设现在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();
}发布于 2018-01-30 05:57:52
查看FragmentManager.getBackStackEntryAt方法,您可以从那里返回历史记录的任何片段(…)。
发布于 2018-01-30 06:07:07
循环遍历后堆栈条目,同时,如果您通过id或标记找到任何匹配的片段,只需弹出包含片段A的名称/标记的back堆栈,以便只显示片段A,而不是再次添加。
发布于 2018-01-30 06:13:17
您将一个标记fragmentTransaction.addToBackStack(FragmentA.class.getSimpleName());给事务,您可以使用相同的标记在后台查找片段,在创建新的框架之前,使用片段管理器上的findFragmentByTag检查该片段的逆堆栈,如果它存在,则该方法返回该片段,否则为null。
https://stackoverflow.com/questions/48514715
复制相似问题