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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/ly8261861/article/details/78110003