Java 如何使用意图将图像(jpg)从一个活动传递到另一个活动?

Java 如何使用意图将图像(jpg)从一个活动传递到另一个活动?,java,android,android-intent,Java,Android,Android Intent,您好,我的问题是我无法将我的图像(Jpg)从一个活动传输到另一个活动。我被困在我的项目中间,所以请帮助我。 Activity1.java public void Story1(View view) { String link=getResources().getResourceName(R.drawable.image1of1); Intent in = new Intent(Activity1.this,Activity2.class); in

您好,我的问题是我无法将我的图像(Jpg)从一个活动传输到另一个活动。我被困在我的项目中间,所以请帮助我。

Activity1.java

public void Story1(View view) {

        String link=getResources().getResourceName(R.drawable.image1of1);
        Intent in = new Intent(Activity1.this,Activity2.class);
        in.putExtra("image",link);
        startActivity(in);
}
public void Story1(View view) {

    int link=R.drawable.image1of1;
    Intent in = new Intent(Activity1.this,Activity2.class);
    in.putExtra("image",link);
    startActivity(in);
}
Activity2.java

protected void onCreate(Bundle savedInstanceState) 
{


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_story_cat1);

        i1 = (ImageView) findViewById(R.id.img1);

        Intent in = getIntent();
        Bundle b = in.getExtras();

        String img=getIntent().getStringExtra("image");
        i1.setImageURI(Uri.parse(img));




    }
protected void onCreate(Bundle savedInstanceState) 
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_story_cat1);

        i1 = (ImageView) findViewById(R.id.img1);

        Intent in = getIntent();
        Bundle b = in.getExtras();

        int img=getIntent().getIntExtra("image",-1);
        i1.setImageResource(img);
}

您需要以字节数组的形式发送, 送,

在活动中接受

Bundle extras = getIntent().getExtras();
byte[] data = extras.getByteArray("image");
然后在第二个活动中转换为位图

Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
最后进入imageview

imageView.setImageBitmap(bmp);
***尝试使用id发送和接收

送,, 使用-
getResources().getIdentifier(图像名称,“drawable”,.getPackageName())获取id
发送-
intent.putExtra(“图像”,id)

接收-intent.getIntExtra(“图像”,-1) get drawable-
getResources().getDrawable(活动2中的id_)


然后设置为imageview,尝试以整数形式发送id

Activity1.java

public void Story1(View view) {

        String link=getResources().getResourceName(R.drawable.image1of1);
        Intent in = new Intent(Activity1.this,Activity2.class);
        in.putExtra("image",link);
        startActivity(in);
}
public void Story1(View view) {

    int link=R.drawable.image1of1;
    Intent in = new Intent(Activity1.this,Activity2.class);
    in.putExtra("image",link);
    startActivity(in);
}
Activity2.java

protected void onCreate(Bundle savedInstanceState) 
{


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_story_cat1);

        i1 = (ImageView) findViewById(R.id.img1);

        Intent in = getIntent();
        Bundle b = in.getExtras();

        String img=getIntent().getStringExtra("image");
        i1.setImageURI(Uri.parse(img));




    }
protected void onCreate(Bundle savedInstanceState) 
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_story_cat1);

        i1 = (ImageView) findViewById(R.id.img1);

        Intent in = getIntent();
        Bundle b = in.getExtras();

        int img=getIntent().getIntExtra("image",-1);
        i1.setImageResource(img);
}

传递字节数组或位图本身的可能重复是一个糟糕的想法(因为意图大小限制)
in.putExtra(“image”,R.drawable.image1of1)i1.setImageDrawable(ContextCompat.getDrawable(这是getIntent().getIntExtra(“图像”))
应该做GetIntextra()要求两个参数的事情吗?我已经试过了,但不起作用。我没有试过你的代码,这对位图图像有效吗?因为我有jpg图像。如果对你有帮助,你应该接受回答/向上投票。:)我在1小时前更新了这个答案,有人至少在15分钟前回答了这个问题。这个答案正好解决了你的问题,而另一个问题很小。那你为什么不接受这个?兄弟,我使用了你的第二个选项,没有字节数组。这对我很有效。谢谢你的帮助,我已经投票接受了你的答案。我太忙了,我没有得到回复,所以很抱歉回复太晚。是的,我做了,但getIntExtra会接受两个参数,我已经通过了图片和-1。并且没有这样的函数存在。getInt()。但再次感谢。@Swapnil第二个参数是默认值,如果bundle不包含“image”键,则getIntExtras()将返回该默认值。在设置图像资源之前添加一个检查,即if(img!=-1)i1.setImageResource(img);安德烈·泰克斯解释说我犯了什么错误,但问题现在解决了。