2013-08-26 53 views
1

我试图在调用摄像机意图之后更新onActivityResult上的imageview,但好像视图在onActivityResult之后被破坏并重新创建。如果我在onCreate上执行它,它工作正常。我正在使用Galaxy S3进行测试。为什么UI/Activity在onActivityResult之后被破坏

奇怪的是,当我在我的桌面上创建相同的代码时,它似乎已经工作了一段时间,但在我的笔记本电脑上却没有。在调试一段时间之后,桌面版本中又出现了问题,并且在调试器中,位图在onactivity结果中得到了正确更新,但是随后活动立即被销毁并立即创建,从而将视图重置为初始状态。

onCreate被调用三次,1.当屏幕第一次显示时,2.摄像机意图完成之后,onActivityResult之前,以及3.之后的Activity结果。我不确定为什么在#2和#3之前活动被破坏并重新创建。

我没有做任何方向更改。

**在清单

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

活动代码**

Acvity设置

@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> 
+1

你会得到什么错误/崩溃?有错误吗?或者,它只是不显示ImageView中的图像? – MiStr

+0

没有错误,它只是不显示图像视图中的图像 – MonkeyBonkey

+0

你确定你的imageview在那一刻在屏幕上? setBackground为BLUE或其他东西,看看它是否在布局正确 –

回答

3

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

更新Android清单以忽略该活动上的屏幕分辨率更改修复了它。

android:configChanges="orientation|screenSize" 
android:screenOrientation="portrait" 
相关问题