Получить изображение из галереи, чтобы установить изображение в фрагменте?

Как получить изображение из галереи, чтобы установить изображение в фрагменте? OnActivityResult не вызывается в фрагменте .. этот код я написал в фрагменте

img_user.setOnClickListener(new View.OnClickListener() { @Override 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); } }); public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data != null) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContext().getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); img_user.setImageBitmap(BitmapFactory.decodeFile(picturePath)); cursor.close`enter code here`(); } else { Toast.makeText(getActivity(), "Try Again!!", Toast.LENGTH_SHORT) .show(); } } 

Вы можете сделать это таким образом …. в своей основной деятельности

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

И внутри вашего фрагмента

  Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // ******** code for crop image i.putExtra("crop", "true"); i.putExtra("aspectX", 100); i.putExtra("aspectY", 100); i.putExtra("outputX", 256); i.putExtra("outputY", 356); try { i.putExtra("return-data", true); startActivityForResult( Intent.createChooser(i, "Select Picture"), 0); }catch (ActivityNotFoundException ex){ ex.printStackTrace(); } 

а также

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==0 && resultCode == Activity.RESULT_OK){ try { Bundle bundle = data.getExtras(); Bitmap bitmap = bundle.getParcelable("data"); img_user.setImageBitmap(bitmap); } catch (Exception e) { e.printStackTrace(); } } } 

Прекрасно подходит для меня

Я также столкнулся с той же проблемой. Фактически callback для startActivityForResult() возвращается к родительской активности, поэтому вам нужно сделать явный вызов из фрагмента функции onActivityResult() следующим образом.

В классе Parent Activity переопределите метод onActivityResult() и даже переопределите его в классе фрагментов и вызовите в качестве следующего кода.

В родительском классе:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Fragment fragment = getFragmentManager().findFragmentById(R.id.container); fragment.onActivityResult(requestCode, resultCode, data); } 

В классе Child Class: This Extends выполните вашу логику для настройки изображения в режиме просмотра изображений.

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); image.setImageBitmap(BitmapFactory.decodeFile(picturePath)); cursor.close(); } else { Toast.makeText(getActivity(), "Try Again!!", Toast.LENGTH_SHORT).show(); } super.onActivityResult(requestCode, resultCode, data); } 

Пожалуйста, найдите следующий код, он будет работать. Добавьте это в свой фрагмент

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { //Your stuff }