Cómo pasar la imagen predeterminada a la actividad anterior si no se selecciona ninguna imagen

En mi aplicación, tengo una función de cámara. El usuario puede capturar la imagen o escoger de la galería.

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

Cuando se hace clic en el botón de envío, volverá a la actividad anterior.

Actividad A

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

Mi pregunta ahora es cómo pasar una imagen predeterminada a la Actividad A ¿Si el usuario no seleccionó ninguna imagen?

Esta es la xml imageView de la Actividad 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" /> 

Si no hay ninguna imagen seleccionada, quiero @mipmap/no_image volver a la Actividad B. ¿Es posible? Gracias.

Puede pasar un Uri de su imagen almacenada en recursos de la siguiente manera:

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

A continuación, puede utilizarlo como de costumbre Uri para mostrar la imagen en ImageView .

ByDefault establece el valor de selectedImage en "default".

Ahora en su addNewItem() y changeItem() comprobar el valor pasado en imageUri

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

No es necesario devolver una imagen predeterminada a la Actividad A. Como otros escribieron, sólo tiene que prepararse para la condición cuando el usuario no seleccione ninguna imagen. Modifique su onActivityResult para la actividad A así:

 @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; } } 

Código:

  @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 } } 
  • Java dando respuesta incorrecta en un cálculo
  • DrawerLayout en la parte superior de Actionbar
  • ¿Cómo manejar páginas web "infinitas"?
  • Comportamiento extraño en la sentencia do / while en Galaxy S5 y Android 5.1.1
  • Obtención periódica de datos (sondeo) desde el servidor en Android
  • Obtenga el código de estado HTTP para las solicitudes correctas con Volley
  • Kotlin android parcelable
  • Android notification show Imagen de cadena sin unicode
  • ¿Cómo cambiar el tamaño del contenido de una webview en android?
  • Android: Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1) en movie.draw
  • Campo no inyectado en el proyecto Android Dagger
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.