从Camera Intent返回时,片段会被破坏4次

时间:2015-11-30 10:26:40

标签: java android android-fragments android-camera android-camera-intent

我有一个简单的片段,当用户点击屏幕时,它会发送一个Intent来打开Camera应用程序,然后期望返回一个图像。

public void camera() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap)extras.get("data");
        imageView.setImageBitmap(imageBitmap);
    }
}

根据Google developer,这应该是所有必需的。

拍完照片后,我按相机应用程序中的SAVE按钮,它会返回我的应用程序。

我在onDestroy()onActivityResult()中设置了一些断点,它首先销毁片段并创建一个新片段2次,然后调用onActivityResult()然后它......再次被毁......并创造了。所以图像会丢失。

为什么会发生这种情况,我该如何解决?

在Samsung S4上运行

2 个答案:

答案 0 :(得分:0)

您是否尝试使用名为EXTRA_OUTPUT的额外意图,该照片会将照片存储在给定的uri

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

startActivityForResult(intent , Request_Id);

答案 1 :(得分:0)

我找到了一个脏的修复(脏imo看起来很奇怪)

AndroidManifest.xml中将此参数添加到处理相机意图的Activity

android:configChanges="orientation|screenSize"

Activity被摧毁,因为往来于Camera应用程序的转换中的方向更改...使用此参数它不会破坏。