【问题标题】:Fragment gets destroyed 4 times when returning from Camera Intent从相机意图返回时碎片被破坏 4 次
【发布时间】:2016-03-03 22:56:23
【问题描述】:

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

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() 然后它被...再次破坏...并创建。所以图像丢失了。

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

在三星 S4 上运行

【问题讨论】:

  • 你在logcat上有什么例外

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


【解决方案1】:

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

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

android:configChanges="orientation|screenSize"

Activity 被破坏,因为在与相机应用之间的转换中方向发生变化...使用此参数它不会破坏。

【讨论】:

    【解决方案2】:

    您是否尝试过使用名为EXTRA_OUTPUT 的intent extra,它将照片存储在给定的uri 中

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    
    startActivityForResult(intent , Request_Id);
    

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2013-12-22
      • 2016-07-07
      • 1970-01-01
      • 2013-04-07
      • 2012-03-30
      • 2017-06-13
      相关资源
      最近更新 更多