我的Samsung 4S手机应用程序中的相机活动中拍摄的照片未更新图像视图。我将照片的Uri保存在saveinstancestate中,照片在相机上,但它不会更新imageview。以下是代码。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bitmap image1;
if(requestCode == RESULT_CROP_IMAGE)
{
Bundle extras = data.getExtras();
image1 = extras.getParcelable("data");
}
else {
if (requestCode == RESULT_LOAD_IMAGE) {
selectedImage = imageUri; // this gets the photo just taken
} else
selectedImage = data.getData(); // this gets an existing photo and it works
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
picturePath = cursor.getString(columnIndex);
cursor.close();
image1 = BitmapFactory.decodeFile(picturePath);
}
displayphoto = Bitmap.createScaledBitmap(image1, newWidth, newHeight, true);
ImageView imageView = (ImageView) findViewById(R.id.myImage);
imageView.setEnabled(true);
imageView.setImageBitmap(displayphoto);
Button cropPhoto = (Button)findViewById(R.id.cropPhoto);
cropPhoto.setVisibility(View.VISIBLE);
不仅imageView没有显示图像,cropPhoto按钮也不会出现。在调试模式下,我可以看到正在执行的指令,我检查了返回照片的尺寸,这些尺寸是正确的,但没有显示。但是,如果我从相机中获取现有照片,一切正常,所以我知道它与丢失全局变量有关。我知道在拍摄照片时必须为某些对象检索instancestate,我在下面的代码中执行此操作,因此我知道我的imageUri已正确返回。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putParcelable("myURI", imageUri);
savedInstanceState.putString("myPath", mCurrentPhotoPath);
super.onSaveInstanceState(savedInstanceState);
}
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
imageUri = savedInstanceState.getParcelable("myURI");
mCurrentPhotoPath = savedInstanceState.getString("myPath");
}
那么这里缺少什么?为什么我的图像或按钮不显示?这与拍摄照片时丢失全局变量有关吗?另外,我应该提一下,它每隔一段时间就可以工作并且图像会出现。我不明白为什么它通常不会出现。