活动通过杀害意图拍照后/所谓的onCreate活动通过杀害意图拍照后/所谓的onCreate(Act

2019-05-13 18:25发布

我试图使用意图拍照。 我的问题是,有时拍照我的活动,它调用startActivityForResult后,似乎被破坏,这样的onCreate被再次调用。

这里是我的了点击的ImageView的,其形象应更换后拍照代码:

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);
        }

...

@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");
    }
}

因此,所有我尝试是拍照和替换它的imageview的形象。 但在某些情况下的onCreate被onActivityResult后调用被称为和新图像丢失。

帮助是极大的赞赏。

Answer 1:

实际上,相机会导致您的活动方位的变化,这就是为什么你的活动已被破坏并重新创建。

在你的manifest文件添加这将防止取向的变化,你的活动将不会被摧毁和重建。

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait" >
</activity>


Answer 2:

修复您的活动/应用的发展方向,因为当你回来/结束()活动,并在同一时间,你改变方向,然后活动刷新和自动开始重新启动。



Answer 3:

它似乎有导入图像时,如银河S3,破坏活动的手机。 应该指出的是,如果我的应用是在纵向模式下,它会发生,因为图像是在横向模式。 因此,所有在清单文件中有关configChanges的建议并不适用于这种情况。

我落得这样做是不是在活动本身也)战斗活动的onDestroy(导致不的onCreate之后被称为片段的onActivityResult()())是实现onActivityResult(在那里我能得到图像路径。 然后我通过该路径来的片段,一旦被创建它,以便进一步处理。 当然,我不得不告诉我的应用程序,一旦它被重建,它需要返回到调用fragmnet来处理图像



Answer 4:

禁用“不保留活动”开发设置。 否则,它会破坏你离开活动。



文章来源: Activity killed / onCreate called after taking picture via intent