最近维护的项目里bugly中fragment报了几种错误,记录一下:

Fragment already active

出现场景:这是Fragment调用setArguments()方法时报的错误。
原因:当Android堆栈正在删除Fragment而删除操作没有完成时,也就是Fragment仍保持active又被重新调用了setArguments()方法,常见操作是快速连续点击调用这个Fragment的操作.。
解决方法:使用Fragment的isRemoving()方法来判断该Fragment是否还存在堆栈中,如果true,那么Fragment依然active,可以复写相同地址下的Arguments来解决;如果false,那么说明Fragment not active,可以直接调用setArguments()。

if (fragment.isRemoving()) {    fragment.getArguments().putAll(bundle);} else {    fragment.setArguments(bundle);}

如果是全局的dialogfragment,可以通过判断fragment是否为null来设置。

Fragment already added

出现场景: Fragment:快速双击调用FragmentTransaction.add()或者DialogFragment.show()方法添加fragment,而fragment不是每次单独生成的,就会引起这个异常。
原因: fragment不是每次单独生成的,就会引起这个异常;show()内部调用了FragmentTransaction.add()方法。
解决方法: Fragment:在add()方法时候,先判断fragmentA.isAdded()

if(!fragmentA.isAdded()){        FragmentManager manager =getFragmentManager();        FragmentTransaction ft = manager.beginTransaction();        ft.add(fragment, "tag");        ft.commit();}

DialogFragment:重写show方法,根据tag来获取fragment进行判断:

@Overridepublic void show(FragmentManager manager, String tag) {    Fragment fragment = manager.findFragmentByTag(tag);    if (fragment == null || !fragment.isAdded()) {        super.show(manager, tag);    }}

Fragment MyFragment not attached to Activity
出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等需要上下文Context的方法。
解决方法:
1.将调用的这些方法写在OnStart()中。
2.在调用:getResources().getString(R.xx.xxx); 之前增加一个判断isAdded();

Can not perform this action after onSaveInstanceSate

原因: 用户在onSaveInstanceState期间操作了fragment,比如后退,切换操作等
解决办法: commitAllowingStateLoss()去代替commit()

更多相关文章

  1. 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图
  2. Android(安卓)Handler消息机制中的ThreadLocal源码分析
  3. android 初始化时获得控件位置,宽高的属性
  4. Android显式intent和隐式intent
  5. Android(安卓)AysncTask 从源码角度简单理解它的使用限制原因
  6. Android(安卓)中Service组件
  7. 黑马程序员12——android之事件传播机制
  8. Android培训班(83)Dalvik虚拟机的初始化
  9. android Debug调试

随机推荐

  1. Android EdtiText 添加表情
  2. android(27)(显示意图之打开浏览器)
  3. Android判断文件类型(视频、音频、图片等)
  4. Android 常用工具类封装
  5. Android之SharedPreferences轻量数据存储
  6. 关于android 摄像头 显示方向
  7. Android Intent 大全 截止到Level 8
  8. 【NFC】Android NFC API Reference中英文
  9. Android布局文件xml
  10. Android View之组合控件实例(一)