简体   繁体   English

片段onback按钮按下android跳过片段

[英]Fragment onback button press android skip fragments

I have 4 Fragments ABC D. how to use back stack and how to set fragments? 我有4个片段ABCD。如何使用反向堆栈以及如何设置片段? I want to add just Fragment A to stack and when I press back button from BC or D, I want to to set fragment A. I dont want BC and D in back stack 我只想添加片段A到堆栈中,当我按BC或D中的“后退”按钮时,我要设置片段A。我不希望BC和D放在堆栈中

Normally in your FragmentTransaction you should call addToBackstack(null) to add it into backstack. 通常,在FragmentTransaction ,应调用addToBackstack(null)将其添加到Backstack中。

The backstack is actually a stack where you pop a Fragment when user presses back. Backstack实际上是一个堆栈,当用户按下时,您会在其中弹出一个Fragment。

So if A puts B, B puts C and C puts D; 因此,如果A放B,B放C,C放D; you cannot go from D to A directly. 您不能直接从D转到A。

You can override onBackPressed() and control the behavior yourself without using the Fragment's builtin back stack support. 您可以覆盖onBackPressed()并自己控制行为,而无需使用Fragment的内置后堆栈支持。

You can popbackstack to clear any fragments in history and ad to backstack fragment A like so : 您可以通过popbackstack清除历史记录中的所有片段,并通过广告将片段A反向堆叠,如下所示:

//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();

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

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