我有Activity1有一个ImaveView包括图像预览。 一旦我按下按钮,我将从Activity1移动到Activity2。在Activity2中,我没有图像预览,但是有一个选项按钮“保存Activit1的图像?”是或否。Android - 如何将ImageView从一个活动转移到另一个活动?
目前我正在做错误的方式,就像将图像保存在磁盘中,然后从磁盘读取它。但有没有办法没有保存图像,我可以将一个imageView从Activity1转移到Activity2?
以下是我如何在Activity1> ImageView中获取图片,然后需要将其移至Activity2。任何想法?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.imageView = (ImageView)this.findViewById(R.id.picture);
Button photoButton = (Button) this.findViewById(R.id.capture_btn);
Button btnShareToEmail = (Button) this.findViewById(R.id.btnshare);
btnShareToEmail.setOnClickListener(this);
//photoButton.setOnClickListener(new View.OnClickListener() {
//@Override
// public void onClick(View v) {
// Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
// startActivityForResult(cameraIntent, CAMERA_REQUEST);
// }
//});
// without frozen
new Handler().postDelayed(new Runnable() { public void run() {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}}, 100);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}
编辑:
//设置 - 活性1
Intent winShare = new Intent(getBaseContext(), Activity2.class);
winShare.putExtra("Title", "r2.jpg");
winShare.putExtra("image1", photo);
//int image_link = getIntent().getIntExtra("image1");
startActivityForResult(winShare,0);
//获取 - 活性2
Bitmap bitmap = (Bitmap) getIntent().getParcelableExtra("image1"); // BITMAP_SHARED_KEY = "bitmap_shared_key"
imageView.setImageBitmap(bitmap);
// save it
imageView.buildDrawingCache();
Bitmap bm=imageView.getDrawingCache();
OutputStream fOut = null;
Uri outputFileUri;
try {
File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MYAPPPPPPPPPS" + File.separator);
root.mkdirs();
File sdImageMainDirectory = new File(root, "myPicName.jpg");
outputFileUri = Uri.fromFile(sdImageMainDirectory);
fOut = new FileOutputStream(sdImageMainDirectory);
bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
} catch (Exception e) {
Toast.makeText(this, "Error occured. Please try again later.",Toast.LENGTH_SHORT).show();
}
你必须做putExtra当你开始另一个活动,和图像的传输路径(如它来自galery或相机)或int值(R.drawable。???) –