skip to Main Content

I’m trying to put 3 images to ImageView. but the problem is when I pick an image from the gallery, The same image shows to all of the imageView, I’m Using startActivityForResult(intent, 3);

How can I select separate images for the separate imageView?

Here is my code for picking an image

  editImage1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");
            //noinspection deprecation
            startActivityForResult(intent, 3);
        }
    });

    editImage2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");
            //noinspection deprecation
            startActivityForResult(intent, 3);
        }
    });

    editImage3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");
            //noinspection deprecation
            startActivityForResult(intent, 3);  
        }
    });             // other clicklistener also here

And Here is The code for the activity result

 @SuppressWarnings("deprecation")
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);



    try {


        if (data == null){

            return;
        }


        if (data.getData() != null) {

            photoUri1 = data.getData();
            photoUri2 = data.getData();
            photoUri3 = data.getData();
            photoUri4 = data.getData();
            photoUri5 = data.getData();
            photoUri6 = data.getData();

            userImage1.setImageURI(photoUri1);
            userImage2.setImageURI(photoUri2);
            userImage3.setImageURI(photoUri3);
            petImage1.setImageURI(photoUri4);
            petImage2.setImageURI(photoUri5);
            petImage3.setImageURI(photoUri6);


        }




        Toast.makeText(getContext(), "Photo selected!", Toast.LENGTH_SHORT).show();



    }catch (Exception e){

        Toast.makeText(getContext(), "Error"+e, Toast.LENGTH_SHORT).show();

    }



}

Is there any chance for picking images separately

Ref: enter image description here

2

Answers


  1. There are many ways to implement it. Maybe you can use a different requestCode for different images. You code:

                photoUri1 = data.getData();
                photoUri2 = data.getData();
                photoUri3 = data.getData();
                photoUri4 = data.getData();
                photoUri5 = data.getData();
                photoUri6 = data.getData();
    
                userImage1.setImageURI(photoUri1);
                userImage2.setImageURI(photoUri2);
                userImage3.setImageURI(photoUri3);
                petImage1.setImageURI(photoUri4);
                petImage2.setImageURI(photoUri5);
                petImage3.setImageURI(photoUri6);
    

    is reading 6 times the same thing and put it in the 6 images

    Login or Signup to reply.
  2. It is for these reasons that the OnActivityResult method is deprecated.

    use it like this using the Activity Results Api

    var resultLauncherImage1 = registerForActivityResult(StartActivityForResult()) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            // There are no request codes
            val data: Intent? = result.data
            //code to put data in image 1
        }
    }
    
    
    var resultLauncherImage2 = registerForActivityResult(StartActivityForResult()) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            // There are no request codes
            val data: Intent? = result.data
            //code to put data in image 2
        }
    }
    
    
    var resultLauncherImage3 = registerForActivityResult(StartActivityForResult()) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            // There are no request codes
            val data: Intent? = result.data
            //code to put data in image 3
        }
    }
    
    
    
    fun openSomeActivityForResult() {
        val intent = Intent(this, SomeActivity::class.java)
        resultLauncherImage1 .launch(intent)
    resultLauncherImage2.launch(intent)
    resultLauncherImag3.launch(intent)
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search