2010-08-19 19 views
22

Tengo una clase Main con el método onCreate(). en ese método hice el objeto de la clase MapFile. Y llamé a sus métodos readFile() y readIndex(). en el método readIndex() llamo a otra clase llamada MapTile donde leo los mosaicos de imágenes de mi archivo binario y allí tengo que mostrar mi imagen.mostrar imagen de byteArray

La pregunta es, ¿cómo puedo mostrar una imagen sin poner mi código en el método onCreate(Bundle savedInstanceStare)? Lo intento de esta manera, pero en primera línea me da NullPointerException.

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

Respuesta

6

creo que el problema no es la bytearray pero el findViewById. Como dices, el NPE está en la primera línea. Hay reglas en torno a este método tiene dos opciones para llamarlo:

O se lo utiliza para consultar una vista que ya tiene en el diseño que llama en setContentView
O que lo utilice en una vista contenida en una disposición que inflado manualmente con un diseño inflador

Si intenta usarlo en su actividad para llamar a una Vista desde cualquier otro diseño distinto al de setContentView que no haya inflado usted mismo, devolverá nulo.

+0

¿Me podría dar algún ejemplo .... yo no podía entender. – sajjoo

+0

eliminar la línea ImageView image = (ImageView) findViewById (android.R.id.icon); y reemplazarlo por ImageView image = new ImageView (this); y después de configurar el imageBitmap, agregue el ImageView a su diseño – Sephy

+0

ohh gracias mucho sephy – sajjoo

32

la adición de una matriz de bytes a un androide imageview:

 //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

Simple y eficaz; Gracias compañero –

+0

esta debería ser la respuesta aceptada ... ya que responde la pregunta (bien). – YvesLeBorg