我在onActivityResult
调用相机意图后尝试更新图像视图,但似乎视图在 onActivityResult 之后被破坏并重新创建。如果我在 onCreate 上做它工作正常。我正在使用 Galaxy S3 进行测试。
奇怪的是,当我在我的桌面上构建相同的代码时,它似乎已经工作了一段时间,但不是在我的笔记本电脑上。在调试了一段时间后,桌面构建和调试器中再次出现问题,位图在 onactivityresult 中正确更新,但随后活动被破坏并立即再次创建,将视图重置为初始状态。
onCreate 被调用了 3 次,1. 屏幕首次出现时,2. 相机 Intent 完成后 onActivityResult 之前,3. on Activity Result 之后。我不确定为什么活动在#2 和#3 之前被破坏并重新创建。
我没有做任何方向改变。
** 代码 **
清单中的活动设置
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 和 Intent 请求
@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>