Android 单击“上载”按钮后在其他活动中显示图像

Android 单击“上载”按钮后在其他活动中显示图像,android,android-intent,Android,Android Intent,单击“上载”按钮后,我想向其他活动显示我的图像。我有两个活动(主要和主要2)。目前,在从gallery中选择图像后,我打算将uri用于下一个活动。我如何将uri改为上传按钮 MainActivity.Java private void uploadImage(){ @Override public void onResponse(String s) { loading.dismiss(); Toast.makeTe

单击“上载”按钮后,我想向其他活动显示我的图像。我有两个活动(主要和主要2)。目前,在从gallery中选择图像后,我打算将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();
        }
    }
}

您可以将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);
试试这个代码 首先将uri作为字符串放入意图中

intent.putExtra("imageUri", imageUri.toString());
然后在第二个活动中,只需像这样转换回字符串

Uri myUri = Uri.parse(extras.getString("imageUri"));

您可以按以下方式执行此操作:

定义类级别变量:

   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();
    }
});

哇!非常感谢你!它可以工作,但当我从“多媒体资料”中选择“图像”时,它仍打算进行下一个活动,我不希望这样做。然而,我通过注释/删除startActivity(i)onActivityResult解决了这个问题。我删除startActivity是为了防止它打算进行下一个活动,这是正确的吗?事实上是这样的。如果您希望仅通过单击按钮继续下一个活动,则startActivity(i)应仅放置在按钮的onClick方法中。非常感谢!很高兴为您提供帮助,请将答案标记为已接受,这样,如果其他人有相同的问题,他们可以从中受益:)谢谢您的帮助!:)不客气,请投票并接受答案!!谢谢你的帮助!:)
 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);