fragment来回切换导致crash IllegalStateException No activity moveToState
来源:互联网 发布:java 加密 编辑:程序博客网 时间:2024/05/17 10:43
最近项目中遇到monkey错误。
Line 113755: 05-14 23:53:06.860 E/AndroidRuntime( 7823): FATAL EXCEPTION: main
Line 113757: 05-14 23:53:06.860 E/AndroidRuntime( 7823): Process: com.aliyun.dvrapp, PID: 7823
Line 113759: 05-14 23:53:06.860 E/AndroidRuntime( 7823): java.lang.IllegalStateException: No activity
Line 113761: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1059)
Line 113763: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1054)
Line 113765: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1895)
Line 113767: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.Fragment.performActivityCreated(Fragment.java:2083)
Line 113769: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:917)
Line 113771: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1072)
Line 113773: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.BackStackRecord.run(BackStackRecord.java:852)
Line 113775: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
Line 113777: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
Line 113779: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.os.Handler.handleCallback(Handler.java:815)
Line 113781: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.os.Handler.dispatchMessage(Handler.java:104)
Line 113783: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.os.Looper.loop(Looper.java:192)
Line 113785: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at android.app.ActivityThread.main(ActivityThread.java:5632)
Line 113787: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at java.lang.reflect.Method.invoke(Native Method)
Line 113789: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at java.lang.reflect.Method.invoke(Method.java:372)
Line 113791: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:976)
Line 113793: 05-14 23:53:06.860 E/AndroidRuntime( 7823): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
后来自己验证发现,不断的切换我写的2个fragment就会出现这个错误。
而我自己写的切换代码如下:
public void openStorageFragment() {
if (DVRStaticUtils.testIsSdPath() == -1) {
Toast.makeText(this, R.string.noSdcard, Toast.LENGTH_SHORT).show();
return;
}
if (storageFragment == null) {
storageFragment = new StorageFragment();
}
isNowStorage = true;
android.app.FragmentManager fragmentManager = getFragmentManager();
android.app.FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.replace(R.id.content_frame, storageFragment, "storage").commit();
// settingFragment = null; 原来没有,解决问题加的。
}
public void openSettingFragment() {
if (settingFragment == null) {
settingFragment = new SettingFragment();
}
isNowStorage = false;
android.app.FragmentManager fragmentManager = getFragmentManager();
android.app.FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.replace(R.id.content_frame, settingFragment, "setting").commit();
// storageFragment = null;原来没有,解决问题加的。
}
所以,后来解决方法也在//注释这两行。很多人可能会担心内存溢出,直接赋值null是不是不好。由于我的fragment相对简单,经过50-100次测试,没有内存溢出。
不用太担心。
网上很多方法,修改commit为commitAllowingStateLoss()或者修改onDetech()也不太合适。
- fragment来回切换导致crash IllegalStateException No activity moveToState
- 单例 fragment getChildFragmentManager java.lang.IllegalStateException: No activity
- fragment跳转到Activity的错误,java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- java.lang.IllegalStateException: No activity
- Activity中多个fragment切换
- activity、fragment切换动画
- Fragment之底层关键操作函数moveToState
- Android IllegalStateException: Fragment not attached to Activity
- Android IllegalStateException: Fragment not attached to Activity
- 解决fragment多层嵌套来回切换不显示的问题
- fragment来回切换getActivity()==null问题
- 快速排序及三向切分快速排序
- mysql数据字典
- 面向对象思维之反射
- hdu 5682 zxa and leaf 二分答案
- 旅游软件中关于自由行功能的对比(烂尾)
- fragment来回切换导致crash IllegalStateException No activity moveToState
- OdroidXu4开发环境搭建
- HDU 2115 I Love This Game(结构体排序 or pair)
- 《快学Scala》第六章习题解答
- linux启动start_kernel之console_init
- android开发笔记之多媒体—SoundPool(音效池)
- 好用的mysql数据字典工具
- STL中的Pair方法详解
- android 使用volley下载文件和加载gif图片