繁体   English   中英

ImageView不显示从图库中选择的图像

[英]ImageView not showing image selected from gallery

所以我有一个加载图库的按钮,并使用此代码选择图像...

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

    }


}

但是当它回到原始活动时,ImageView仍然不显示任何内容。 它不会给我任何错误或类似的信息。 这是ImageView的XML ...

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

如何显示?

我最终想出了一些办法。 我已经做了...

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

    }

这对于我要完成的工作很有用。

尝试这个:

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


    }



}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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