点击上传按钮后在另一个活动中显示图像

3

我希望在点击上传按钮后,能够将我的图片显示到另一个活动中。我有两个活动(主活动和Main2)。目前,在从图库选择图像后,我会将uri传递给下一个活动。那么如何在我的上传按钮上设置uri呢?

MainActivity.Java

    private void uploadImage(){
        @Override
       public void onResponse(String s) {
           loading.dismiss();
           Toast.makeText(MainActivity.this, s , Toast.LENGTH_LONG).show();
           Intent i = new Intent(MainActivity.this,Main2Activity.class);
           startActivity(i);
           finish();
       }
   },


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri filePath = data.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);
            Intent i = new Intent(this,Main2Activity.class);
            i.putExtra("imagepath", filePath.toString());
            startActivity(i);


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
4个回答

2
你可以按照以下方式进行操作:
定义一个类级别的变量:
   String filePathString = null;

private void uploadImage(){
 @Override
                public void onResponse(String s) {
                    loading.dismiss();
                    Toast.makeText(MainActivity.this, s , Toast.LENGTH_LONG).show();
                    Intent i = new Intent(MainActivity.this,Main2Activity.class);
                    startActivity(i);
                    finish();
                }
            },


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri filePath = data.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);
            Intent i = new Intent(this,Main2Activity.class);
            filePathString = filePath.toString();
            i.putExtra("imagepath", filePath.toString());
            startActivity(i);


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

然后在你的按钮上设置 OnClickListener:

uploadButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
     Intent i = new Intent(this,Main2Activity.class);
     i.putExtra("imagepath", MainActivity.this.filePathString);
     startActivity(i);
    MainActivity.this.finish();
    }
});

欢迎您,如果觉得回答有帮助,请投票并接受它! - Shridutt Kothari

1
你可以将Uri变量更改为类级别变量,以存储从onActivityResult获取的uri结果。
private Uri filePath;

 if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        filePath = data.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);

            imageView.setImageBitmap(bitmap);
            Intent i = new Intent(this,Main2Activity.class);
            i.putExtra("imagepath", filePath.toString());
            startActivity(i);


        } catch (IOException e) {
            e.printStackTrace();
        }

然后在你的按钮中,你可以传递Uri作为:

Intent i = new Intent(this,Main2Activity.class);
            i.putExtra("imagepath", filePath.toString());
            startActivity(i);

哇!非常感谢!它可以工作了,但是当我从图库中选择图像时,它仍然会意图到下一个活动,这不是我想要的。然而,我通过注释/删除startActivity(i) onActivityResult来解决了这个问题。我移除了startActivity以防止它意图到下一个活动,这样做是正确的吗? - arsenallavigne
事实上就是这样。如果你想要通过点击按钮来进行下一个活动,那么startActivity(i)应该只放在按钮的onClick方法中。 - M.Waqas Pervez
非常感谢您! - arsenallavigne
很高兴能够帮助,如果有其他人遇到同样的问题,他们也可以从中受益,请将答案标记为已接受 :) - M.Waqas Pervez

1
尝试这段代码。首先将uri作为字符串放入意图中。
intent.putExtra("imageUri", imageUri.toString());

然后在第二个活动中,只需像这样将其转换回字符串。
Uri myUri = Uri.parse(extras.getString("imageUri"));

0
 Uri filePath = data.getData();
                String[] projection = {MediaStore.MediaColumns.DATA};
                Cursor cursor = managedQuery(filePath, projection, null, null,
                        null);
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
                cursor.moveToFirst();

                String selectedImagePath = cursor.getString(column_index);
    Then pass selectedImagePath in the intent like below
    Intent i = new Intent(this,Main2Activity.class);
            i.putExtra("imagepath", filePath.toString());
            startActivity(i);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接