简体   繁体   中英

ImageView not showing image selected from gallery

So I have a button that loads the gallery, and selects an image using this code...

public void getGalleryImage(View v){
    Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    startActivityForResult(intent, 1);
}

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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        galleryImage.setImageBitmap(BitmapFactory.decodeFile(picturePath));

    }


}

But when it goes back to the original activity, the ImageView still doesn't show anything. It doesn't give me any errors, or anything like that. Here the XML for the ImageView...

<ImageView
    android:id="@+id/galleryImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

How can I get it to show?

I ended up figuring something out. I just did...

 if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        galleryImage.setImageURI(selectedImage);

    }

This worked for what I was trying to accomplish.

Try this:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        galleryImage.setImageBitmap(MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri));
    }
}
  public class MainActivity extends AppCompatActivity{

    ImageView image;
    Button pick;

    int TAG_IMAGE = 100;


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        image = (ImageView) findViewById(R.id.imageView);

        pick = (Button) findViewById(R.id.button);

        pick.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("*/*");


                startActivityForResult(Intent.createChooser(intent,"Select Image "),TAG_IMAGE);

            }
        });


    }

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

        if(requestCode == TAG_IMAGE && resultCode == RESULT_OK )
        {
            Uri selectedImage = data.getData();


            try
            {

                String[] filePath = {MediaStore.Images.Media.DATA};

                Cursor cursor = getContentResolver().query(selectedImage,filePath,null,null,null);
                cursor.moveToFirst();

                int columnIndex = cursor.getColumnIndex(filePath[0]);

                String images = cursor.getString(columnIndex);



                image.setImageURI(selectedImage);


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


    }



}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM