简体   繁体   English

Fragment backstack 和替换

[英]Fragment backstack and replace

I have 2 fragments A and B .我有 2 个片段AB I added fragment B from fragment A (A->B) with addToBackStack() .我使用addToBackStack()从片段A (A->B)添加了片段B Now when I am in fragment B and press back everything is OK and return to the A .现在,当我在片段B并按回时一切正常并返回A

But when I am in fragment C I want to display fragment B if it is existed in fragment manager by checking getFragmentManager().findFragmentByTag("");但是当我在片段C时,如果片段管理器中存在片段B我想通过检查getFragmentManager().findFragmentByTag("");来显示它getFragmentManager().findFragmentByTag(""); then I replace this fragment.然后我replace这个片段。

The problem is the backstack not work in this situation.问题是backstack在这种情况下不起作用。 I mean whenever I press back the fragment A is not shown.我的意思是,每当我按回时,片段 A 都不会显示。 How can I preserve that backstack too?我怎样才能保留那个backstack

This is the code i am using这是我正在使用的代码

FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.popBackStack(fragment.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
            FragmentTransaction tx = fragmentManager.beginTransaction();

            Log.v("on calling fragment", fragment + "==" + fragment.toString());
            tx.replace(R.id.fl_main, fragment).addToBackStack(fragment.toString());

This give different particular backstack string to each fragment being replaced.这为每个被替换的片段提供了不同的特定 backstack 字符串。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM