1. 程式人生 > >fragmentManager中的回退棧

fragmentManager中的回退棧


下部tab標籤,實現fragment頁面切換。

遇到的問題:

通過FragmentTransaction的replace方法會導致,每次都會重新呼叫fragment的onCreateView()方法,浪費時間。

解決方法:

通過FragmentTransaction的hide和show方法來實現fragment的顯示和隱藏,這樣就不會重複呼叫onCreateView函數了。

FragmentTransactioin 可以用來新增,刪除fragment,也可以控制fragment的顯示和隱藏。

這是如果呼叫addToBackStack(null),此時的狀態就會被儲存在回退棧,按返回鍵的時候就會顯示出棧頂的

getSupportFragmentManager().popBackStack() 這個方法可以讓棧頂的fragment出棧。

只有在程式執行時被動態新增的fragment才會被新增到後退棧。

  getSupportFragmentManager().beginTransaction()

       .add(R.id.fragment_container, newFragment,"testa")

       .addToBackStack(null)

       .commit();

 程式跑起來之後,通過這個方法後退棧數才會加一,如果在程式碼中一口氣新增多個,再執行程式,getSupportFragmentManager().getBackStackEntryCount()得到的後退棧數值為零。