我有一个像这样启动 Camera Intent 的 Activity(没什么特别的):
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(Environment.getExternalStorageDirectory(), filename);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
Uri imageUri = Uri.fromFile(photo);
startActivityForResult(intent, CAMERA_REQUEST);
然后我在 onActivityResult()
中得到结果并将位图设置为 ImageView。同样,没什么特别的。
问题是相机应用程序始终处于横向状态。因此,如果用户在点击确定将设备发送回我的 Activity 时将设备保持在水平方向,而我的 Activity 之前是纵向的,那么它会使我的 Activity 崩溃,因为它必须重建它。如果在点击相机中的“确定”之前将设备倾斜到纵向,则它不会崩溃。我该如何解决这个问题?
最佳答案
快速而肮脏的方法是自己处理方向变化。如果您的应用程序没有不同的横向和纵向布局,那么这是一个不错的选择。方法如下。
将 android:configChanges="orientation"
添加到 AndroidManifest
中的 Activity。
您可以做的另一件事是确保您的 onSaveInstanceState
正在保存相机数据和您可能正在使用的任何其他数据,以便当应用程序自行重新加载时,您可以在 中重新加载该数据>onRestoreInstanceState
。如果您分享您的 LogCat 错误,您可能会看到 NullPointerException
,这是因为数据在轮换时丢失。我会把钱花在相机数据上。
关于android - 从 Camera Intent 返回会导致 Activity 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143519/