我没有设法从活动到另一个活动获取图片。
这是我的代码部分:
这是一项活动:
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);
}
答案 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);