2015-02-06 182 views

回答

0
FragmentTransaction你應該叫

addToBackstack(null)將其添加到後臺堆棧中。

後臺堆棧實際上是一個堆棧,當用戶按下後彈出一個片段。

所以如果A放B,B放C和C放D;你不能直接從D到A.

您可以覆蓋onBackPressed()並自行控制行爲,而無需使用Fragment的內置備份棧支持。

+0

我在堆棧 – user3237043 2015-02-09 05:24:56

+0

增加只是一個片段你還是沒有給整個故事。你能給出你想要的嗎?您將A添加到堆棧中。但是之後有哪一個呢? – tasomaniac 2015-02-09 05:32:07

+0

(http://stackoverflow.com/questions/28337999/android-fragment-backpress/28339373?noredirect=1#comment45027213_28339373) – user3237043 2015-02-09 12:10:41

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