问题
今天在开发的时候遇到个问题,Activity里有个Fragment,Fragment里面有线程,当我点击跳转系统相机拍照时,纵向拍照时没问题,横向拍照时崩溃并报下面异常:
Fragment LoadingDialog{5050c91} (43fec3a8-79d5-4cba-be44-e1847d712ed0)} not associated with a fragment manager.
原因是原来的线程在运行中,横屏导致Activity绘制,生命周期重新走了一遍,原来的fragment实例被销毁导致Fragment内控件找不到fragment管理器
解决方案
在相应的 Activity 的配置文件 AndroidManifest.xml 里的 ”activity“ 标签下 加上这个属性:
android:configChanges="orientation|screenSize"
如果想要在横竖屏切换的时候保存或者处理其他数据 就需要重写onConfigurationChanged方法了
Activity和Fragment里都可以重写
@Override
public void onConfigurationChanged(Configuration newConfig) {
//保存或者处理其他数据的代码
super.onConfigurationChanged(newConfig);
}