使用FrameLayout替換Fragment時 不銷燬Fragment
阿新 • • 發佈:2019-01-22
如果使用FragmentManager.beginTransaction().replace().commint().時,被替換的Fragment會被銷燬掉,再次啟動時,之前的資料就會丟失,如果我們只是想暫時切換到其他Fragment中,之後再返回,就需要用FragmentManager.beginTransaction().add ().commint()新增Fragment,如果已經add過,則將當前顯示的Fragment 使用FragmentTransaction.hide()方法隱藏掉,再通過FragmentTransaction.show()方法顯示出來即可。
貼程式碼:
FragmentTransaction ft =fragmentManager.beginTransaction();
public void hideFragment(FragmentTransaction ft){
if (fra_person != null)
ft.hide(fra_person);
if (fra_map != null)
ft.hide(fra_map);
}
ft.commit();if (fra_map == null) {
fra_map = new Fragment_map();
ft .add(R.id.framelayout,fra_map);
}else{
ft.show(fra_map);
}
ft.commit();