是否可以将图像传输到3个不同的活动?

时间:2019-02-28 05:07:45

标签: java android android-intent

我是编程新手。我正在实现一个由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);

请帮助我。

5 个答案:

答案 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)

最简单的将是

  1. 创建一个BaseActivity来扩展您的所有第一,第二和结果 BaseActivity进行活动。
  2. 将图像位图存储在BaseActivity中声明的变量中。
  3. 从BaseActivity中,您可以从任何Activity中访问位图图像。

这是最简单的方法,但是可能还有其他方法可以实现这一目的。

答案 4 :(得分:0)

@ student76我不知道您的做法,但是请多解释一下。

  1. 创建基本活动类 例如:公共类BaseActivity扩展了AppCompatActivity { } 并在这里包装所有作品

  2. 创建您的第一个活动 以前的例子:公共类FirstActivity扩展了BaseActivity { } 在此过程中,您将处理图像并将图像存储在基本活动中声明的变量中

  3. 创建第二个活动 以前的例子:公共类SecondActivity扩展BaseActivity { } 现在直接访问您在BaseActivity中声明的变量。 现在您可以访问该图像
  4. 创建第二个活动 以前的例子:公共类ThirdActivity扩展BaseActivity { } 与SecondActivity相同。 这样,您就可以在所有活动中访问位图。