这是一个有趣的...
我有一个正在为运行 android 2.3.3 及更高版本的设备编写的应用程序。
它有一个主要 Activity ,通过 Intent 调用相机。
如果用户点击按钮启动相机;然后拍照;然后单击“完成”返回主 Activity - 应用程序工作正常并在主 Activity 的 ImageView 中显示新图片。
但是,如果用户以纵向使用主 Activity;然后单击按钮打开相机 Intent 并将方向更改为横向;然后单击完成返回主 Activity - 应用程序崩溃
但是...但是,如果用户以纵向使用主 Activity;然后单击按钮打开相机 Intent 并将方向更改为横向;然后将方向更改回纵向(在相机中),然后单击完成以返回主要 Activity - 然后应用程序继续正常运行。
我尝试过的东西: 我已经更改了 list 文件以强制应用程序(主要 Activity )以纵向方式定向(我也删除了它) 我已将此行添加到主要 Activity 中,以尝试处理从相机 Intent 返回的 Activity 的重新绘制:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在调试窗口中,我收到描述空指针异常的错误 - 我认为这是因为在要传递的图像的方向更改后 View 不再存在,除非方向与离开时的方向相同。
我有点卡住了,希望得到一些建议。
最佳答案
当您的屏幕方向发生变化时,您的 Activity
将被销毁并以新的方向重新创建。因此,在 Activity
的生命周期中获得引用的任何变量将不再引用任何内容,如果您随后尝试访问它们引用的对象而不重新分配它们的值,您将获得NullPointerException
。
onSaveInstanceState()
方法用于保存配置更改之间的临时数据。这会创建一个 Bundle,当 Activity
再次启动时,它会传递给 onCreate()
。
没有任何代码,我不知道这是不是你的问题,但值得一看。
参见 http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges了解更多信息(毫无疑问,比我提供的信息更准确)。
关于android 方向 - Intent 问题(相机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136209/