Как загрузить изображение в виде изображения из галереи?

У меня есть активность, у которой есть кнопка. Когда я нажимаю на кнопку, она перенаправляет меня в галерею изображений. Я хочу показать выбранное изображение в следующем действии, используя представление изображения. Но он не отображает изображение. Когда изображение установлено, изображение выключено.

Ниже приведен мой код для выбора изображения и перехода к следующему. В моей деятельности я не использую никакой истории.

@Override 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(); if (!(picturePath.equals(""))) { Intent intent = new Intent(); intent.setClass(MainActivity.this, ImageInGellary.class); intent.putExtra("picturePath", picturePath); startActivity(intent); } } } public class ImageInGellary extends Activity { Button cancel; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.load_image); cancel = (Button) findViewById(R.id.buttonCancelPicture); Intent in = getIntent(); savedInstanceState = in.getExtras(); String picturePath = savedInstanceState.getString("picturePath"); ImageView imageView = (ImageView) findViewById(R.id.img_view); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); cancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* * Intent i = new Intent(Intent.ACTION_PICK, * android.provider.MediaStore * .Images.Media.EXTERNAL_CONTENT_URI); * * startActivityForResult(i, RESULT_LOAD_IMAGE); */ Intent intent = new Intent(); intent.setClass(ImageInGellary.this, MainActivity.class); startActivity(intent); } }); } } 

      public class ImageGalleryDemoActivity extends Activity { private static int RESULT_LOAD_IMAGE = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); buttonLoadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); } }); } @Override 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(); ImageView imageView = (ImageView) findViewById(R.id.imgView); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); } } } 

    Если вы хотите достичь этого в 1 строке, вам нужно всего лишь:

     Picasso.with(MainActivity.this).load(data.getData()).noPlaceholder().centerCrop().fit().into((ImageView) findViewById(R.id.imageView1)); 

    Полное решение: –

    Выберите изображение

     public void pickImage() { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE); } 

    Загрузить изображение

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { //Get ImageURi and load with help of picasso //Uri selectedImageURI = data.getData(); Picasso.with(MainActivity1.this).load(data.getData()).noPlaceholder().centerCrop().fit() .into((ImageView) findViewById(R.id.imageView1)); } } } 

    В вашей ситуации вам необходимо передать ImageURI в следующую активность

     Uri selectedImageURI = data.getData(); 
     public void onClick(View view) { Intent gallery = new Intent(Intent.ACTION_GET_CONTENT); gallery.setType("image/*"); startActivityForResult(gallery, RESULT_LOAD_IMAGE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK){ Uri imageUri = data.getData(); imgView.setImageURI(imageUri); } } 

    ЕСЛИ НИЧЕГО НЕ РАБОТАЕТ СЛЕДУЮЩИЙ КОД

     import java.io.FileDescriptor; import java.io.IOException; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class ImageGalleryDemoActivity extends Activity { private static int RESULT_LOAD_IMAGE = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture); buttonLoadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); } }); } @Override 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(); ImageView imageView = (ImageView) findViewById(R.id.imgView); Bitmap bmp = null; try { bmp = getBitmapFromUri(selectedImage); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } imageView.setImageBitmap(bmp); } } private Bitmap getBitmapFromUri(Uri uri) throws IOException { ParcelFileDescriptor parcelFileDescriptor = getContentResolver().openFileDescriptor(uri, "r"); FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); parcelFileDescriptor.close(); return image; } } 

    Я решил вашу проблему. После того, как изображение выбрано, преобразуйте изображение Uri в String и второй класс, преобразуйте строку обратно в изображение.

    http://whats-online.info/science-and-tutorials/95/Android-get-image-from-gallery-into-imageview-programmatically/

    http://whats-online.info/science-and-tutorials/49/Android-passing-multiple-data-from-one-activity-to-another/

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { case SELECT_PHOTO: if(resultCode == RESULT_OK){ Uri selectedImage = data.getData(); if(selectedImage !=null){ Intent intent=new Intent(MainActivity.this, Activity2.class); Bundle extras = new Bundle(); extras.putString("image", selectedImage.toString()); intent.putExtras(extras); startActivity(intent); } } } 

    Activity2.class

      Bundle extras = getIntent().getExtras(); String name = extras.getString("image"); Uri imageFinal=Uri.parse(name);