fragmentManager中的回退棧
阿新 • • 發佈:2019-02-07
下部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()得到的後退棧數值為零。