我是编程新手。我正在实现一个由3个Java类(FirstActivity,SecondActivity和ResultActivity)组成的项目。拍摄的图像位于FirstActivity。我需要将图像传输到SecondActivity,然后从SecondActivity传输到ResultActivity。请注意,FirstActivity和ResultActivity仅具有可显示的imageview。请帮我。有人可以为我提供示例代码供指导。任何建议将不胜感激:)
第一个活动:
ImageView imgTaken = findViewById(R.id.imgTaken);
Bitmap bitmap = ((BitmapDrawable) imgTaken.getDrawable()).getBitmap();
Intent i = new Intent();
i.setClass(ProcessImage.this, Match.class);
i.putExtra("Bitmap", bitmap);
startActivity(i);
第二活动:
final Bitmap bitmap = (Bitmap) this.getIntent().getParcelableExtra("Bitmap");
Intent i = new Intent();
i.setClass(Match.this, Request.class);
i.putExtra("Bitmap", bitmap);
startActivity(i);
结果活动:
ImageView imageView = findViewById(R.id.imageView);
Bitmap bitmap = (Bitmap) this.getIntent().getParcelableExtra("Bitmap");
imageView.setImageBitmap(bitmap);
请帮助我。
答案 0 :(得分:1)
通过Intent
发送,如下所示:
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);
byte [] ba = bao.toByteArray();
Intent i = new Intent(context,SecondClass.class);
i.putExtra("bitmap",ba);
像这样从Intent
获取数据:
byte [] ba1 =getIntent().getByteArrayExtra("bitmap");
Bitmap bitmap = BitmapFactory.decodeByteArray(ba1,0,ba1.length);
答案 1 :(得分:0)
欢迎来到Stackoverflow,最简单的答案就是像这样使您的位图保持静态:
public static Bitmap bitmap = null;
bitmap = ((Bitmap) imgTaken.getDrawable()).getBitmap();
开始下一个活动,然后访问该图像,如:
imageView.setImageBitmap(FirstActivity.bitmap);
答案 2 :(得分:0)
代替使用此
final Bitmap bitmap = (Bitmap) this.getIntent().getParcelableExtra("Bitmap");
进行此更改
Bitmap bitmap = (Bitmap) getIntent().getExtras().get("Bitmap");
答案 3 :(得分:0)
最简单的将是
这是最简单的方法,但是可能还有其他方法可以实现这一目的。
答案 4 :(得分:0)
@ student76我不知道您的做法,但是请多解释一下。
创建基本活动类 例如:公共类BaseActivity扩展了AppCompatActivity { } 并在这里包装所有作品
创建您的第一个活动 以前的例子:公共类FirstActivity扩展了BaseActivity { } 在此过程中,您将处理图像并将图像存储在基本活动中声明的变量中