1. 程式人生 > >使用FrameLayout替換Fragment時 不銷燬Fragment

使用FrameLayout替換Fragment時 不銷燬Fragment

如果使用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();