2010-08-19 17 views
22

Ho una classe Main con il metodo onCreate(). in quel metodo ho reso l'oggetto di classe MapFile e ho chiamato i suoi metodi readFile() e readIndex(). nel metodo readIndex() io chiamo un'altra classe denominata MapTile dove leggo le tessere immagini dal mio file binario e lì devo visualizzare la mia immagine.visualizza immagine da byteArray

La domanda è, come posso visualizzare un'immagine senza inserire il mio codice nel metodo onCreate(Bundle savedInstanceStare)? Sto provando in questo modo ma in prima linea mi dà NullPointerException.

ImageView image = (ImageView) findViewById(android.R.id.icon);   
Bitmap bMap = BitmapFactory.decodeByteArray(imageTile, 0, imageTile.length); 
image.setImageBitmap(bMap); 

risposta

6

Penso che il problema non sia il byteArray ma lo findViewById. Come dici tu, l'NPE è sulla prima riga. Ci sono regole in tutto questo metodo si hanno due opzioni per chiamarlo:

O si utilizza per interrogare un Visualizza hai già nel layout hai chiamato in setContentView
O lo si utilizza su una visualizzazione contenuto in un layout inflazionato manualmente con un inflatable di layout

Se si tenta di utilizzarlo nella propria attività per richiamare una vista da qualsiasi altro layout rispetto a quello in setContentView che non si è gonfiato, verrà restituito nulla.

+0

Potete per favore darmi qualche esempio .... non riuscivo a capire. – sajjoo

+0

rimuovere la riga ImageView image = (ImageView) findViewById (android.R.id.icon); e sostituirlo con ImageView image = new ImageView (this); e dopo aver impostato imageBitmap, aggiungi ImageView al tuo layout – Sephy

+0

ohh grazie molto sepolto – sajjoo

32

l'aggiunta di un array di byte a un imageview Android:

 //byte[] chartData 
     ImageView imgViewer = (ImageView) findViewById(R.id.chart_image); 
     Bitmap bm = BitmapFactory.decodeByteArray(chartData, 0, chartData.length); 
     DisplayMetrics dm = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(dm); 

     imgViewer.setMinimumHeight(dm.heightPixels); 
     imgViewer.setMinimumWidth(dm.widthPixels); 
     imgViewer.setImageBitmap(bm); 
+2

Semplice ed efficace; Grazie amico –

+0

questa dovrebbe essere la risposta accettata ... in quanto risponde alla domanda (bene). – YvesLeBorg