1. 程式人生 > >Android優化之切換Fragment

Android優化之切換Fragment

切換Fragment的方法簡介
replace()
該方法只是在上一個Fragment不再需要時採用的簡便方法
show() hide() add()
正確的切換方式是add(),切換時hide(),add()另一個Fragment;再次切換時,只需hide()當前,show()另一個


看原始碼吧

//錯誤的做法
//每次切換的時候,Fragment都會重新例項化,重新載入一邊資料,這樣非常消耗效能和使用者的資料流量
public void switchFragment(Fragment targetFragment) {
    if (targetFragment == null)
      return;
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    //目標Fragment替換原來的Fragment
    transaction.replace(R.id.content, targetFragment);
    transaction.commit();
  }

//正確的做法
private void switchFragment(Fragment targetFragment) {
    FragmentTransaction transaction = getSupportFragmentManager()
            .beginTransaction();
    if (!targetFragment.isAdded()) {
        transaction
                .hide(currentFragment)
                .add(R.id.main_fragment, targetFragment)
                .commit();
        System.out.println("還沒新增呢");
    } else {
        transaction
                .hide(currentFragment)
                .show(targetFragment)
                .commit();
        System.out.println("添加了( ⊙o⊙ )哇");
    }
    currentFragment = targetFragment;
}


作者:AlicFeng
連結:http://www.jianshu.com/p/aa762fe166a8
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。