为什么UI /活动onActivityResult后销毁(why is UI/Activity de

2019-10-18 13:16发布

我想以更新的ImageView onActivityResult我打电话好了摄像头后的意图,但它好像观点得到破坏,onActivityResult后重建。 如果我这样做对的onCreate它工作正常。 我使用的是银河S3进行测试。

奇怪的是它似乎已经工作了一小会儿,当我建我的桌面上相同的代码,但不能在我的笔记本电脑。 调试了一段时间后,问题在桌面生成再次出现,以及和调试器中的位图获取的onactivityresult正确更新,但随后将活性被破坏,并产生立即再次重置视图到初始状态。

所述的onCreate叫做三次,1。当屏幕第一显示了,2后的照相机意图完成并且onActivityResult之前和3上的活动结果后。 我不知道为什么被活动破坏和#2,#3之前重新创建。

我没有做任何方向的变化。

** **代码

在清单Acvity设置

   android:configChanges="orientation"
   android:screenOrientation="portrait" 

活动

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {


        if (resultCode == RESULT_OK) {
            String imageUri = "file:///storage/sdcard0/Pictures/Funhouse/IMG_20130826_163938.jpg";

            // Try by using setImageURI
            preview.setImageURI(Uri.parse(imageUri));

        }
     }

所述的onCreate和意图请求

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        preview = (ImageView) findViewById(R.id.img_preview);

//      works fine if I set the image view here
//      String imageUri = "file:///storage/sdcard0/Pictures/Funhouse/IMG_20130826_163938.jpg";
//      preview.setImageURI(Uri.parse(imageUri));
    }



    public void takePhoto(View view) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, 0);

    }

这里是布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

     <Button
         android:id="@+id/btn_take_photo"
         android:layout_width="match_parent"
         android:layout_height="50dp"
         android:layout_marginBottom="67dp"
         android:onClick="takePhoto"
         android:text="Take Photo" />

    <ImageView
        android:id="@+id/img_preview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

 </LinearLayout>

Answer 1:

因此,原来从相机活动返回被调用UI在OnActivityResult更新后的破坏,重置原始调用活动的UI。 屏幕分辨率的改变是由摄像头活动返回被触发,但只有onActivityResult事件之后。

更新Android清单忽略屏幕分辨率更改该活动固定它。

 android:configChanges="orientation|screenSize"
 android:screenOrientation="portrait" 


文章来源: why is UI/Activity destroyed after onActivityResult