2010-08-02 13 views
9

il salvataggio del file:BitmapFactory.decodeFile restituisce un'immagine ancora nulla esiste

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

Caricamento del file:

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

L'ultima riga fornisce un'eccezione di puntatore nullo, perché sta tornando BitmapFactory.decodeFile nulla? Posso verificare che il file venga salvato correttamente poiché posso estrarlo usando adb e vedere la visualizzazione png correttamente.

+0

Hai chiuso il flusso di output del file? A cosa è impostato "i" e perché ha un nome di singolo carattere? – Douglas

+0

Sì, è chiuso. ero una vista immagine, che era impostata su null, perché l'ho fatto riferimento in modo errato. – stealthcopter

risposta

18

Se il NullPointerException è direttamente su questa linea:

i.setImageBitmap (BMAP);

Quindi il tuo problema è che i è null. Dato che stai chiamando setImageBitmap(), suppongo che i sia un ImageView - assicurati che la tua chiamata findViewById() funzioni.

Inoltre, è necessario utilizzare il seguente per ottenere fname:

String fname = new File (getFilesDir(), "test.png") getAbsolutePath();.

2

Quando si utilizza il parametro options nel metodo DecodeFile essere sicuri che il InJustDecodeBounds proprietà è impostata su falsa o altrimenti sarà sempre restituirà null. Questo può essere impostato su true quando vuoi solo che il file venga decodificato ma non ne hai più bisogno nella tua app/codice. In questo modo non è necessario allocare memoria aggiuntiva. Vedere here per un esempio.

Problemi correlati