我刚刚注意到我在我的应用程序中遇到的一个奇怪问题。当我运行我的应用程序时,如果我最小化它,然后去设置并更改语言,然后恢复我的应用程序(注意:这是最小化/恢复,而不是退出/启动),它会调用 ActivityonCreate()
而不是调用onResume()
.
这导致了很多问题,尤其是在我在视图中使用片段的区域。正在显示的片段是旧片段,但它们持有的活动引用是null
. 所以getActivity()
恢复后不能立即生效,导致NullPointerException
很多地方。
我的应用程序是为 Android 4.0.4 及更高版本构建的,我在不同的设备和模拟器上注意到了这个问题,所以这不是平台问题。
理想情况下,我想onResume()
按应有的方式打电话。如果没有,我宁愿让应用程序自行重新启动,并将用户置于主屏幕上,而不必面对应用程序崩溃。
该应用程序本身仅支持一种语言:英语(美国)。
有没有人遇到过这个问题?如果是,你能设法解决它吗?
编辑:根据 Class Stacker 的回答,看来我需要自己处理配置更改。这应该没问题,除了onCreate()
本身引发异常。我正在打电话getWindow().setRequestFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
。onCreate()
当定位发生变化时,这一行抛出了一个RuntimeException
说法,即 this must be called before setContentView()
。
这是否意味着我的 Activity 没有被正确销毁?