如何将图像从活动转移到另一个活动?

时间:2015-06-02 16:12:45

标签: android

我没有设法从活动到另一个活动获取图片。

这是我的代码部分:

这是一项活动:

button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
   EditText website = ((EditText) findViewById(R.id.editText));
    String g = website.getText().toString();
    Intent intent = new Intent(CoohseImage.this, MainActivity.class);
    ByteArrayOutputStream bs = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 50, bs);
    intent.putExtra("image", bs.toByteArray());
    intent.putExtra("message", g);
    startActivity(intent);
}});

这是第二项活动:

targetImage = (ImageView) findViewById(R.id.targetimage);
Intent intent = getIntent();
message = intent.getStringExtra("message");
// b = intent.getByteExtra("image", "dfdd");
((TextView)findViewById(R.id.textView)).setText(message);
if(getIntent().hasExtra("image")) {
     ImageView targetImage = new ImageView(this);
     Bitmap b = BitmapFactory.decodeByteArray(getIntent().getByteArrayExtra("image"), 0, getIntent().getByteArrayExtra("image").length);
     targetImage.setImageBitmap(b);
}

5 个答案:

答案 0 :(得分:2)

更好的方法是在活动之间共享位图的来源,并在新创建的活动的onCreate()中加载位图。

答案 1 :(得分:0)

不推荐这样做,因为它需要大量内存。

第一个Activity

中的

Intent i = new Intent(this, second.class);
                    i.putExtra("data", bitmap)
                    startActivity(i);
第二个活动中的

    Bundle b = getIntent().getExtras();
    Bitmap bmp = b.getParcelable("data");

我建议您将图像保存到磁盘并在第二个活动中打开它!

答案 2 :(得分:0)

您可以使用捆绑包通过Intent发送数据限制,因此我强烈建议您执行Elenasys:保存在磁盘中并在目标活动中打开。(您可以使用意图发送路径)。

答案 3 :(得分:0)

只需将引用传递给对象

int image = R.drawable.imageinquestion;

Intent i = new Intent(Act1.this, Act2.class);
i.putExtra("IMAGE", image);
startActivity(i);

在Act2中

Bundle b = getIntent().getExtras();
if(b!=null)
{
image = b.get("IMAGE");//or getInt() or getString()
}

如果是网站,请将链接发送为字符串

答案 4 :(得分:0)

1 - 首先,您需要将位图保存在文件中。

2 - 从图像视图中获取位图:

imageview.buildDrawingCache();
Bitmap bm=imageview.getDrawingCache();

3 - 将其保存在文件中:

 OutputStream fOut = null;
Uri outputFileUri;
 try {
File root = new File(Environment.getExternalStorageDirectory()
  + File.separator + "folder_name" + File.separator);
root.mkdirs();


 File sdImageMainDirectory = new File(root, "myPicName.jpg");
outputFileUri = Uri.fromFile(sdImageMainDirectory);
fOut = new FileOutputStream(sdImageMainDirectory);


  } catch (Exception e) {
Toast.makeText(this, "Error occured. Please try again later.",
  Toast.LENGTH_SHORT).show();


}
 try {
bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();


  } catch (Exception e) {
}

4-而不是共享发送位图,将outputFileUri意图发送到下一个活动。

5 - 从outputFileUri中检索图像到第二个活动中的图像视图:

 Uri uri = Uri.fromFile(outputFileUri );
 imageView.setImageURI(uri);