我有4个碎片A B C D. 如何使用后台堆栈以及如何设置片段? 我想只将片段A添加到堆栈中,当我按下B C或D的后退按钮时,我想设置片段A. 我不想在后面的堆栈中使用B C和D
答案 0 :(得分:0)
通常在您的FragmentTransaction
中,您应该致电addToBackstack(null)
将其添加到Backstack中。
backstack实际上是一个堆栈,当用户按下时会弹出Fragment。
所以如果A放B,B放C和C放D;你不能直接从D到A.
您可以覆盖onBackPressed()
并自行控制行为,而无需使用Fragment的内置后端堆栈支持。
答案 1 :(得分:0)
您可以使用popbackstack来清除历史记录中的任何片段,并将广告反馈到像这样的反向堆栈片段:
//create an instance of the fragment you want o be avilable on back press
FragmentA fragmentA = new FragmentA();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//Create instance of the fragment that is going to be loaded
FragmentD fragmentD = new FragmentD();
//Replace the current fragment with Fragment D
fragmentTransaction.replace(R.id.frame_container, fragmentD);
//Clear frgament history and include the fragment wanted on back press
fragmentManager.popBackStack();
fragmentTransaction.addToBackStack(fragmentA.getclass().getName());
fragmentTransaction.commit();