Android 编译工具升级到24后遇到的坑之V4包的Fragment
来源:互联网 发布:摄氏度转华氏度 c语言 编辑:程序博客网 时间:2024/05/16 14:07
android.support.v4.app.Fragment版本升到24及更高后,修复了一些fragment的bug,例如显示隐藏问题,但是又改了一部分逻辑,显示隐藏问题请看这篇文章
http://blog.csdn.net/archer_zoro/article/details/54237363
http://www.jianshu.com/p/c12a98a36b2b
开发工具是Android Studio我引入的依赖版本是compile'com.android.support:support-v4:25.3.1',旧工程就发生了这个错误。
java.lang.IllegalStateException: Fragment null must be a public static class to be properly recreated from instance state.
后来几经查询发现,是v4包升级后,FragmentManager 改变了判断,
private void doAddOp(int containerViewId, Fragment fragment, String tag, int opcmd) { final Class fragmentClass = fragment.getClass(); final int modifiers = fragmentClass.getModifiers(); // 一开始是进行一些状态的判断 if (fragmentClass.isAnonymousClass() || !Modifier.isPublic(modifiers) || (fragmentClass.isMemberClass() && !Modifier.isStatic(modifiers))) { throw new IllegalStateException("Fragment " + fragmentClass.getCanonicalName() + " must be a public static class to be properly recreated from" + " instance state."); }//后面省略}
java.lang.Class.isAnonymousClass() 当且仅当底层类是匿名类,则返回true
java.lang.Class.isMemberClass() 返回true当且仅当底层类是成员类。
isPublic和isStatic是修饰,类是不是public和静态类。
之前页面是一个普通左右滑动页面,用的viewpager和fragment组合,因为代码比较少,两个fragment都作为内部类写在了里面,一直相安无事,直到更新版本,解决办法就是把内部类fragment提取出来作为一个普通类就没问题了。
祝大家好运,我搜这个问题一直没搜到或者说没什么实际意义,最后还得研究代码,希望我写的能帮助到别人(ˇˍˇ) 想~。
java.lang.IllegalStateException: Fragment null must be a public static class to be properly recreated from instance state.
- Android 编译工具升级到24后遇到的坑之V4包的Fragment
- Android 中加载v4包里面的fragment
- Android 发布到jcenter遇到的坑(附升级gradle4.1后的新问题)
- Android开发V4包和V7包版本不一遇到的问题填过的坑
- Android--app包中的fragment和v4包中的fragment的使用的区别
- android日记:v4包的fragment和app包fragment的区别
- 14 Fragment的V4包的使用
- Android v4包使用NotificationCompat.Builder 遇到undefined的问题
- android V4包冲突,遇到最奇葩的一个问题
- android 解决 Eclipse 升级到 ADT 23.6.x 后 产生 fragment 的问题
- Android Studio 升级到3.0遇到的坑
- android开发之 android.app.fragment与android.support.v4.fragment之间的区别
- android开发之 android.app.fragment与android.support.v4.fragment之间的区别
- VS2003升级到VS2005后遇到的问题
- APEX升级到4.1.1后遇到的几个问题
- 升级xcode到4.5后遇到的问题解决方法
- Fragment的app包和v4包解析
- android 升级 必须在同一个开发工具生成的编译包
- PADS 不同单位之间的切换
- 用链表解决特殊的3n+1问题
- informix gis 数据处理
- Leetcode 63. Unique Paths II
- JAVAScript中的undefined
- Android 编译工具升级到24后遇到的坑之V4包的Fragment
- 基于Django的在线MOOC学习系统(5)——创建其余 App 并设计 对应的models.py
- linux编译folly
- powerdesigner 生成sql时生成对应的字段注释
- 三轴加速度传感器角度值转换原理
- CCF NOI1049 旋转图像
- Android基于HttpURLConnection网络请求
- 向数据库中批量插入千万级数据
- 一个java类的初始化过程