Как передать изображение по умолчанию предыдущей активности, если изображение не выбрано

В моем приложении у меня есть функция камеры. Пользователь может снимать изображение или выбирать из галереи.

Активность B

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case RESULT_LOAD_IMAGE: if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK & null != data) { selectedImage = data.getData(); imageView.setImageURI(selectedImage); } break; case REQUEST_IMAGE_CAPTURE: if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { try { selectedImage = imageUri; getContentResolver().notifyChange(selectedImage, null); imageView.setImageURI(null); imageView.setImageURI(imageUri); } catch (Exception e) { Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) .show(); } } } } submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent returnIntent = new Intent(); if(selectedImage!=null) { returnIntent.putExtra("img_uri", selectedImage.toString()); } setResult(Activity.RESULT_OK, returnIntent); finish(); } }); 

Когда кнопка отправки нажата, она вернется к предыдущей операции.

Активность А

  @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == PROJECT_REQUEST_CODE) { imgURI = Uri.parse(data.getStringExtra("img_uri")); if (mClickedPosition == -1) { if (obj != null) obj.addNewItem(imgURI); } else { if (obj != null) obj.changeItem(mClickedPosition, imgURI); } } } } 

Теперь мой вопрос заключается в том, как передать изображение по умолчанию в Activity A. Если пользователь не выбрал какое-либо изображение?

Это xml imageView в imageView B

  <ImageView android:paddingTop="30dp" android:layout_gravity="center" android:layout_width="330dp" android:layout_height="wrap_content" android:adjustViewBounds="true" android:src="@mipmap/no_image" android:scaleType="fitXY" android:id="@+id/imageView" android:layout_weight="0.50" /> 

Если изображение не выбрано, я хочу, чтобы @mipmap/no_image возвращался к Activity B. Возможно ли это? Благодарю.

Вы можете передать URI вашего изображения, хранящегося в ресурсах, следующим образом:

 submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent returnIntent = new Intent(); if(selectedImage!=null) { returnIntent.putExtra("img_uri", selectedImage.toString()); } else { returnIntent.putExtra("img_uri", Uri.parse("android.resource://your.package.name/mipmap/no_image").toString()); } setResult(Activity.RESULT_OK, returnIntent); finish(); } }); 

Затем вы можете использовать его, как обычно, Uri, чтобы показать изображение в ImageView .

ByDefault установил значение selectedImage в значение «default».

Теперь в вашем addNewItem() и changeItem() переданном в imageUri

 if(imageUri.equalsIgnoreCase("default")) // set your default image that is @mipmap/no_image else // set image you are getting from imageUri по if(imageUri.equalsIgnoreCase("default")) // set your default image that is @mipmap/no_image else // set image you are getting from imageUri 

Вам не нужно возвращать образ по умолчанию в Activity A. Как и другие авторы, вам просто нужно подготовиться к тому условию, когда пользователь не выбирает какое-либо изображение. Измените свой onActivityResult для Activity A следующим образом:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(data!=null){ switch (requestCode) { case RESULT_LOAD_IMAGE: if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK) { selectedImage = data.getData(); imageView.setImageURI(selectedImage); } break; case REQUEST_IMAGE_CAPTURE: if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { try { selectedImage = imageUri; getContentResolver().notifyChange(selectedImage, null); imageView.setImageURI(imageUri); } catch (Exception e) { Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show(); } } break; default: //Your default image goes here, when the user doesn't select either of the two options imageView.setImageResource(R.drawable.<default_image>); break; } } 

Код:

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case RESULT_LOAD_IMAGE: if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK & null != data) { selectedImage = data.getData(); imageView.setImageURI(selectedImage); }else{ //set default } break; case REQUEST_IMAGE_CAPTURE: if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { try { selectedImage = imageUri; getContentResolver().notifyChange(selectedImage, null); imageView.setImageURI(null); imageView.setImageURI(imageUri); } catch (Exception e) { Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) .show(); } }else{ //set default } default{ //set default } }