通过意图拍照后调用的活动已被杀死/ onCreate

Cat*_*ivo 32 android android-camera android-camera-intent android-activity

我试图用意图拍照.我的问题是,有时在拍照后我的活动(调用startActivityForResult)似乎被破坏,以便再次调用onCreate.

这是我点击图片浏览后拍照的代码,应替换哪个图片:

if (!getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_CAMERA)) {
            Util.makeLongToast(R.string.lang_no_camera);
        } else {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, TAKE_ITEM_PHOTO);
        }
Run Code Online (Sandbox Code Playgroud)

...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.v(TAG, "onactivityresult called");
    if (requestCode == TAKE_ITEM_PHOTO) {
        if (data != null) {

            imageUri = data.getData();


                try {
                    img_photo.setImageBitmap(Media.getBitmap(
                            getContentResolver(), imageUri));
            } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

        } else
            Log.w(TAG, "data is null");
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试的是拍摄照片并用它替换imageview的图像.但在某些情况下,在调用onActivityResult并且新图像丢失后调用onCreate.

非常感谢帮助.

Akr*_*ram 108

实际上,相机会导致您的活动方向发生变化,这就是您的活动被销毁和重新创建的原因.

在清单文件中添加它会阻止方向更改,并且您的活动不会被销毁和重新创建.

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait" >
</activity>
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,在API高于13级的API中,您还应该将"screenSize"添加到configChanges.http://developer.android.com/guide/topics/manifest/activity-element.html (15认同)
  • 谢谢你的回答!我正在拥抱我的显示器 (14认同)
  • 还有一件事是由于内存不足导致背景和框架杀死过程中的活动,因此再次调用`onCreate()! (4认同)
  • 我仍然有同样的问题 (3认同)
  • 谢谢!android:configChanges ="orientation | keyboardHidden"是缺失的行!;) (2认同)
  • @Akram 这并没有为我解决问题。我的活动扩展了`AppCompactActivity`并且有一个带有几个`fragments`的`viewpager`。其中一个片段正在启动一个图像选择器活动,即画廊。选择图像或按下后退按钮后,即使将所有这些配置放在 `AndroidManifest.xml` 中,我的活动也会重新启动 (2认同)