1.fragment的切换
以前做项目时,fragment切换总是用replace方法,这样对性能影响很大,所以换一种方式用hide和show方法进行展示。
首先定义一个全局的currentFragment

“`
private Fragment currentFragment = new Fragment();
private FragmentTransaction switchFragment(Fragment targetFragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if(!targetFragment.isAdded()){

            if(currentFragment != null){                transaction.hide(currentFragment);            }            transaction.add(R.id.ll_main,targetFragment,targetFragment.getClass().getName());        }else{            transaction.hide(currentFragment).show(targetFragment);        }        currentFragment = targetFragment;    return transaction;}


然后再在切换button上直接调用即可
switchFragment(oneFg).commit();
如果想要刷新数据的话,可以利用fragment的隐藏方法:
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);

    if(hidden){ //隐藏    }else{      //显示    }}

2.fragment重叠
hide和show容易出现fragment重叠现象
解决方法:
通过重写 宿主activity的onSaveInstanceState 方法,然后不保存状态
@Override
protected void onSaveInstanceState(Bundle outState) {
// super.onSaveInstanceState(outState);
}
3.getActivity为空
解决方法:
Activity activity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
activity = (Activity) context;
}
4.fragment嵌套
fragment嵌套经常出现崩溃
解决方法:
宿主fragment 使用getChildFragmentManager();
在宿主fragment中:
@Override
public void onDetach() {
super.onDetach();
try {
//参数是固定写法
Field childFragmentManager = Fragment.class.getDeclaredField(“mChildFragmentManager”);
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}

更多相关文章

  1. Android(安卓)TextView跑马灯效果
  2. Android之选项菜单和上下文菜单解析
  3. Android利用soap WSDL与Webservice通信
  4. Android之AsyncTask源码分析(第五篇:execute方法只能执行一次的原
  5. Android(安卓)判断一个url是否有效
  6. Android读取properties配置文件的实例详解
  7. android studio (mac) 快捷键
  8. 详解Android(安卓)getWidth和getMeasuredWidth
  9. Android(安卓)监听网络状态方法详解

随机推荐

  1. 我的第一个Android升级版本
  2. 为何 Android(安卓)4手机不能当 U 盘了
  3. 布局Layouts之LinearLayout线性布局
  4. (转载)Android性能测试初探
  5. android colormatrix
  6. Android中常见的安全问题
  7. 2.Eclipse版本android 65535解决方案(原
  8. Android中使用网络定位需要的设置
  9. Android中关于JNI 的学习(零)简单的例子,简
  10. Android:分析app、Process、Task之间的区