ImageView se estrelló la aplicación
Cuando se ha hecho clic en imageView, quiero mostrar la imagen en pantalla completa. Por primera vez funciona, pero después de eso se estrelló. Y el error apuntaba a
startActivity(intent);
Código
- Guardar bitmap en tarjeta SD sin comprimirla en android
- PorterduffXfermode: borra una sección de un mapa de bits
- Recorte de rectángulo redimensionable de Android
- Agregar un círculo de cuadro redondo en mapa de bits redondeado
- Aplicación de Android - ¿Cómo guardar un dibujo de mapa de bits en lienzo como imagen? ¿Código de verificación?
Intent intent = new Intent(AddExpenses.this,FullScreenImage.class); imageView.buildDrawingCache(); Bitmap image= imageView.getDrawingCache(); Bundle extras = new Bundle(); extras.putParcelable("imagebitmap", image); intent.putExtras(extras); startActivity(intent); image.recycle();
FullScreenImage
public class FullScreenImage extends Activity { @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_full); Bundle extras = getIntent().getExtras(); Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap"); ImageView imgDisplay; Button btnClose; imgDisplay = (ImageView) findViewById(R.id.imgDisplay); btnClose = (Button) findViewById(R.id.btnClose); btnClose.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { FullScreenImage.this.finish(); } }); imgDisplay.setImageBitmap(bmp ); } }
Logcat
E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.IllegalStateException: Can't parcel a recycled bitmap at android.graphics.Bitmap.checkRecycled(Bitmap.java:256) at android.graphics.Bitmap.writeToParcel(Bitmap.java:1366) at android.os.Parcel.writeParcelable(Parcel.java:1254) at android.os.Parcel.writeValue(Parcel.java:1173)
Uso extras.putParcelable("imagebitmap",image.copy(image.getConfig(), true));
pero recibiendo nuevo error
java.lang.IllegalStateException: Can't copy a recycled bitmap at android.graphics.Bitmap.checkRecycled(Bitmap.java:256) at android.graphics.Bitmap.copy(Bitmap.java:454) at com.example.tony.monthlyexpenses.AddExpenses$4.onClick(AddExpenses.java:176)
- Grilla 2D Array en lienzo de dibujo
- ¿Cómo obtener metadatos de una imagen?
- Android con PorterDuff para combinar imágenes
- Lista de contactos con contacto La foto crea problemas de rendimiento
- Cómo convertir la matriz de bytes en Bitmap
- Dibujar mapas de bits de recursos sobre otro
- Java.lang.OutOfMemoryError BitmapFactory.nativeDecodeAsset ()
- Cómo convertir bitmap a PNG y luego a base64 en Android?
Creo que el problema es porque la serilización se hace después de que la intención es despedida. Así que en lugar del mapa de bits, acaba de poner una copia del Bitmap
de Bitmap
en el intento, como esto:
extras.putParcelable("imagebitmap",image.copy(image.getConfig(), true)); intent.putExtras(extras);
Compruebe si esto soluciona el problema.
- Android: Transparente WebView sobre previsualización de cámara
- Captura una secuencia RTSP en un dispositivo Android