1.这些代码用于调用相机和裁剪图像,图像保存在externalStorageDirectory中。此功能正常
2.但问题是:当我退出此应用程序并再次运行时,它无法加载图像。
MainActivity.java
public class MainActivity extends Activity {
public static final int TAKE_PHOTO = 1;
public static final int CROP_PHOTO = 2;
private Button takePhoto;
private ImageView picture;
private Uri imageUri;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
takePhoto = (Button) findViewById(R.id.take_photo);
picture = (ImageView) findViewById(R.id.picture);
/*
*need a feature to reload to picture~pls help*
*****I find that imageUri is alwasys null,why is that?*****
*/
if(imageUri !=null){
try {
bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
picture.setImageBitmap(bitmap);
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
takePhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
File outputimage = new File(Environment.getExternalStorageDirectory(),"output_image.jpg");
try {
if(outputimage.exists())
{
outputimage.delete();
}
outputimage.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
imageUri = Uri.fromFile(outputimage);
Intent intent = new Intent ("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, TAKE_PHOTO);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case TAKE_PHOTO:
if(resultCode == RESULT_OK){
Intent intent =new Intent ("com.android.camera.action.CROP");
intent.setDataAndType(imageUri, "image/*");
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CROP_PHOTO);
}
case CROP_PHOTO:
if(resultCode == RESULT_OK){
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
picture.setImageBitmap(bitmap);
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
break;
default:
break;
}
}
}
答案 0 :(得分:0)
当活动被破坏并再次运行时," imageUri"重新初始化。所以为了加载图片,我应该重新打开文件并将其设置为ImageView