koo*_*ng3 2 android android-intent android-camera
我有一个像这样启动相机意图的活动(没什么特别的):
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);
Run Code Online (Sandbox Code Playgroud)
比我得到结果onActivityResult()
并将位图设置为 ImageView。再次,没什么特别的。
问题是相机应用程序始终处于横向状态。因此,如果用户在点击 OK 将设备发送回我的 Activity 时将设备保持在水平方向,而我的 Activity 之前是纵向的,那么它会使我的 Activity 崩溃,因为它必须重建它。如果在相机中点击“确定”之前将设备倾斜至纵向,则它不会崩溃。我该如何解决这个问题?
您需要重写该onSaveInstanceState
方法以在适合旋转之前保留活动的设置。然后,在 onCreate 方法中,您可以检查参数是否Bundle
为 null。如果没有,那么您正在重新创建您的活动,并且应该从中加载保存的设置。
快速而肮脏的路线是自己处理方向变化。如果您的应用程序的横向和纵向布局没有不同,那么这是一个不错的选择。就是这样。
添加android:configChanges="orientation"
到您的 Activity 中AndroidManifest
。
您可以做的另一件事是确保您保存onSaveInstanceState
了相机数据和您可能正在使用的任何其他数据,以便在应用程序重新加载自身时,您可以在onRestoreInstanceState
. 如果您分享您的 LogCat 错误,您可能会看到NullPointerException
这是因为数据在轮换时丢失。我会把我的钱放在相机数据上。
归档时间: |
|
查看次数: |
4943 次 |
最近记录: |