在模拟器上成功运行的代码在真机上出现FragmentManager对象为空的问题

来源:互联网 发布:mysql nvl 函数 编辑:程序博客网 时间:2024/06/09 18:46

在做项目的时候遇到了这样一个问题 , 就是代码在模拟器上运行是正常的但是一放到真机上就提示getFragmentManager()得到的值为空 , 这是一个v4包里面的方法 , 导入包都是正常的所以当时没有头绪 , 后来偶然发现模拟器没有切换到横屏的时候也出现了这个问题 , 但是切换到了横屏就没问题了 , 于是就在真机上试了一下 , 果然把方向锁定取消了以后横着拿手机就没问题了 , 但是一旦竖着拿手机又会出问题 , 不过既然定位到了问题那么就好说了 ;

跨越Activity保留活动对象的推荐方法是在一个Retained Fragment中包装和管理它们 . 默认情况下,但配置发生变化时,Fragment会随着它们的宿主Activity被创建和销毁 . 调用Fragment#setRetaininstance(true)允许我们跳过销毁和重新创建的周期 . 指示系统保留当前的fragment实例,即使是在Activity被创新创建的时候 . 不难想到使用fragment持有像运行中的线程、AsyncTask、Socket等对象将有效地解决上面的问题 ;

我在所有fragment的自定义基类中使用的这个方法 , 问题就解决了 ;

0 0
原创粉丝点击