[分别在Android中选择两个图像

问题描述 投票:0回答:2

我正在制作Android应用程序,我需要两个上传图像并将其保存到服务器。enter image description here

当我从第一个按钮选择它时,它出现在第二个按钮中,但是我需要两个不同的图像。

photoUpload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chooseImage();
            }
        });

        photoUpload2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chooseImage();
            }
        });
    }

    private void chooseImage() {
        Intent openGalleryIntent = new Intent();
        openGalleryIntent.setType("image/*");
        openGalleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(openGalleryIntent, "Select Picture"), GALLERY_REQUEST_CODE);
    }

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

        if (requestCode == GALLERY_REQUEST_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {
            Uri uri = data.getData();

            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                imageView.setImageBitmap(bitmap);
                imageView2.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }
java android
2个回答
0
投票

您将相同的图像设置到两个ImageViews。

将您的代码更改为

 photoUpload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            chooseImage(GALLERY_REQUEST_CODE_1);
        }
    });

    photoUpload2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            chooseImage(GALLERY_REQUEST_CODE_2);
        }
    });
}

private void chooseImage(int requestCode) {
    Intent openGalleryIntent = new Intent();
    openGalleryIntent.setType("image/*");
    openGalleryIntent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(openGalleryIntent, "Select Picture"), requestCode);
}

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

    if (requestCode == GALLERY_REQUEST_CODE_1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri uri = data.getData();


        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    if (requestCode == GALLERY_REQUEST_CODE_2 && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri uri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            imageView2.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

0
投票

您得到这个是因为您将选定的图像设置为图像视图1和2。要解决此问题,您可以使用不同的请求代码或使用布尔变量来区分图像1和2的上传

定义两个布尔变量以区分图像1和2的上传

Boolean first = false, second = false;


      @Override
            public void onClick(View v) {
                first = true;
                chooseImage();
            }
        });

        photoUpload2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            second = true;
                chooseImage();
            }
        });
    }

    private void chooseImage() {
        Intent openGalleryIntent = new Intent();
        openGalleryIntent.setType("image/*");
        openGalleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(openGalleryIntent, "Select Picture"), GALLERY_REQUEST_CODE);
    }

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

        if (requestCode == GALLERY_REQUEST_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {
            Uri uri = data.getData();

            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                if(first)
                {
                    imageView.setImageBitmap(bitmap);
                    first = false;
                }else if(second)
                {
                 imageView2.setImageBitmap(bitmap);
                 second = false;
                 }

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

        }

    }

您可以使用库从图库中选择多个图像。有许多可用的库,例如https://github.com/ParkSangGwon/TedPicker

希望这对您有帮助!快乐编码

© www.soinside.com 2019 - 2024. All rights reserved.