• Fragment 切换问题


      1. public void switchContent(Fragment fragment) {  
      2.        if(mContent != fragment) {  
      3.            mContent = fragment;  
      4.            mFragmentMan.beginTransaction()  
      5.                .setCustomAnimations(android.R.anim.fade_in, R.anim.slide_out)  
      6.                .replace(R.id.content_frame, fragment) // 替换Fragment,实现切换  
      7.                .commit();  
      8.        }  
      9.    }  
      10. 每次切换时此个Fragmnet都会被实例化,这种方式使用时适合只做一次处理,永久性的替换。如果它的切换平率过高的话,不建议使用replace()忒费内存
      11. 建议使用:切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个。
        这样就能做到多个Fragment切换不重新实例化:

    /*
    * 设置Fragment选择
    */
    private void setFragmentSelection(int index) {
    ft = fm.beginTransaction();
    initFragment(ft);  每次切换时都隐藏刚才显示的

    switch (index) {
    // 当选择的是私人的时候
    case R.id.rb_personGroup:
    if (fragment_Person == null) {
    fragment_Person = new ULFragment_Person();
    ft.add(R.id.userlist_fragement_main, fragment_Person);
    } else {
    // 重建view视图,附加到UI上并显示。
    ft.show(fragment_Person);
    }
    break;
    // 当选择的是共享组的时候
    case R.id.rb_sharedGroup:
    if (fragment_Shared == null) {
    fragment_Shared = new ULFragment_Shared();
    ft.add(R.id.userlist_fragement_main, fragment_Shared);
    } else {
    // 重建view视图,附加到UI上并显示。
    ft.show(fragment_Shared);
    }
    break;

    }
    ft.commit();
    }

    /*
    * 初始化Fragment 记性判断fragment是否隐藏。
    */
    private void initFragment(FragmentTransaction ft2) {

    if (fragment_Person != null) {
    // 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
    ft2.hide(fragment_Person);
    }
    if (fragment_Shared != null) {
    ft2.hide(fragment_Shared);
    }
    }

  • 相关阅读:
    Java 标识符
    Java 关键字详解
    Java 语言的主要特性
    redis学习
    垃圾回收
    JVM内存结构
    sql总结(DML)
    sql总结(DDL)
    加密算法
    《数据结构》 定长顺序串常用操作代码集合
  • 原文地址:https://www.cnblogs.com/jeno-song/p/5058997.html
Copyright © 2020-2023  润新知