我有一个包含几个嵌套片段的活动。我一直在处理方向变化时遇到的问题。当活动尝试重新创建自身时,出现了错误,导致应用程序崩溃。如果我在方向更改期间调试代码,则应用程序会崩溃,而logcat中没有任何消息。
我的问题似乎是运行时正在尝试重新创建我不想要的活动中的片段。没有任何片段设置了setRetainInstance(true),因此它们不应该被保留。
我已将日志记录添加到Activity和Fragments的onCreate和onDestroy方法中。当应用程序首次运行时,我得到以下输出:
我随后旋转设备,出现了以下内容:
在上面的最后一条消息之后,应用程序崩溃,并显示以下异常消息:
我的问题似乎是运行时正在尝试重新创建我不想要的活动中的片段。没有任何片段设置了setRetainInstance(true),因此它们不应该被保留。
我已将日志记录添加到Activity和Fragments的onCreate和onDestroy方法中。当应用程序首次运行时,我得到以下输出:
Activity onCreate
Fragment1 onCreate
Fragment1 onCreateViewStart
Fragment1 onCreateViewEnd
Fragment2 onCreate
Fragment2 onCreateViewStart
Fragment2 onCreateViewEnd
我随后旋转设备,出现了以下内容:
Fragment1 onDestroy
Fragment2 onDestroy
Activity onDestroy
Fragment1 onCreate
Fragment2 onCreate
Activity onCreate
Fragment1 onCreateViewStart
Fragment1 onCreateViewEnd
Fragment2 onCreateViewStart
Fragment2 onCreateViewEnd
Fragment2 onDestroy
Fragment2 onCreate
在上面的最后一条消息之后,应用程序崩溃,并显示以下异常消息:
E/FragmentManager(32258): No view found for id 0x7f0a0047 (com.appName:id/fragmentHolder) for fragment Fragment2{6529b910 #6 id=0x7f0a0047 16002}
为什么我的碎片会自动重新创建?当方向改变时,有没有办法强制活动重新加载,就像应用程序第一次启动一样?这不是生命周期本来应该工作的方式吗?
如果需要,我可以添加任何代码。