问题标题可能听起来很复杂,但这是我的情况。
我在活动中有一个地图片段。简单的。
打开存储权限以允许显示地图,工作正常。
按主页按钮将应用程序置于后台,然后关闭存储权限并从最近的任务中打开应用程序,应用程序崩溃。
问题是不是调用主机 Activity 的 onResume(),而是在主机 Activity 以及 Map 片段的 onCreateView() 上调用 onCreate()。因此它抛出异常。
当权限更改时,应用程序进程似乎被终止,因此活动被重新创建。
09-24 14:42:55.071: E/AndroidRuntime(12918): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-24 14:42:55.071: E/AndroidRuntime(12918): Caused by:
java.lang.NullPointerException: Attempt to write to field 'int android.support.v4.app.Fragment.mNextAnim' on a null object reference
09-24 14:42:55.071: E/AndroidRuntime(12918): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:718)
09-24 14:42:55.071: E/AndroidRuntime(12918): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
09-24 14:42:55.071: E/AndroidRuntime(12918): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
来自 Activity 的 super.onStart()
我在应用程序权限的动态变化方面遇到了类似的问题。经过一番挖掘后,我的理解可能对您也有帮助。
更改权限会导致系统终止您的应用程序,现在如果您从概览屏幕打开应用程序,它将重新启动您的应用程序,这是崩溃的主要原因,因为您可能正在对片段对象执行操作,该对象现在为空。
这里要注意的重要一点是,在终止之前,片段状态保存在已保存的实例对象中。
要阻止崩溃,您应该使用这行代码获取片段实例 -
mapFragment = (MapFragment)getSupportFragmentManager().findFragmentByTag("MAP FRAG");
这里“MAP FRAG”是您必须为片段提供的标签。
如果您有任何困惑,请分享。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)