2010-08-02 7 views
9

guardar el archivo:BitmapFactory.decodeFile regresa imagen, incluso nula existe

FileOutputStream fo = null; 
try { 
     fo = this.openFileOutput("test.png", Context.MODE_WORLD_READABLE); 
} catch (FileNotFoundException e) { 
     e.printStackTrace(); 
} 
bitmap.compress(CompressFormat.PNG, 100, fo) 

Carga del archivo:

String fname = this.getFilesDir().getAbsolutePath()+"/test.png"; 
Bitmap bMap = BitmapFactory.decodeFile(fname); 
i.setImageBitmap(bMap); 

La última línea da una excepción de puntero nulo, ¿por qué se vuelve nula BitmapFactory.decodeFile? Puedo verificar que el archivo se está guardando correctamente, ya que puedo extraerlo usando adb y ver el png que se muestra correctamente.

+0

¿Ha cerrado la secuencia de salida del archivo? ¿A qué se ha configurado "yo" y por qué tiene un solo nombre de personaje? – Douglas

+0

Sí, está cerrado. Yo era una vista de imagen, que se estableció en nulo, porque lo hice de manera incorrecta. – stealthcopter

Respuesta

18

Si el NullPointerException está directamente en esta línea:

i.setImageBitmap (BMAP);

Entonces su problema es que i es . Dado que está llamando a setImageBitmap(), supongo que i es un ImageView - asegúrese de que su llamada findViewById() está funcionando.

Además, se debe utilizar el siguiente para obtener fname:

cadena fname = new File (getFilesDir(), "prueba.png") getAbsolutePath();.

2

Cuando se utiliza el parámetro options en el método DecodeFile estar seguro de que el InJustDecodeBounds propiedad se establece en falsa o de lo contrario, siempre devolverá un valor nulo. Esto se puede configurar como verdadero cuando solo desea que el archivo se decodifique, pero no lo necesita más en su aplicación/código. De esta forma, no es necesario asignar memoria adicional. Ver here para un ejemplo.

Cuestiones relacionadas