2010-08-19 6 views
22

J'ai une classe Main avec la méthode onCreate(). Dans cette méthode, j'ai créé l'objet object de la classe MapFile et appelé ses méthodes readFile() et readIndex(). Dans la méthode readIndex(), j'appelle une autre classe nommée MapTile où je lis les vignettes d'images de mon fichier binaire et là je dois afficher mon image.Afficher l'image de byteArray

La question est, comment puis-je afficher une image sans mettre mon code dans la méthode onCreate(Bundle savedInstanceStare)? J'essaie de cette façon mais en première ligne ça me donne NullPointerException.

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

Répondre

6

Je pense que votre question n'est pas le byteArray mais le findViewById. Comme vous dites que le NPE est sur la première ligne. Il y a des règles autour de cette méthode, vous avez deux options pour l'appeler:

Soit vous l'utilisez pour interroger une vue que vous avez déjà dans la mise en page que vous avez appelé à setContentView
Ou vous l'utilisez sur une vue contenue dans une mise en page gonflé manuellement avec un inflateur de mise en page

Si vous essayez de l'utiliser dans votre activité pour appeler une vue à partir de toute autre disposition que celle du setContentView que vous ne vous êtes pas gonflée, elle renverra la valeur null.

+0

pouvez-vous s'il vous plaît me donner quelques exemples .... je ne pouvais pas comprendre. – sajjoo

+0

supprime la ligne ImageViewView = (ImageView) findViewById (android.R.id.icon); et remplacez-le par ImageView image = new ImageView (this); et après avoir réglé l'imageBitmap, ajoutez le ImageView à votre disposition – Sephy

+0

ohh merci beaucoup sephy – sajjoo

32

l'ajout d'un tableau d'octets à un androïde 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 et efficace; Thanx mate –

+0

cela devrait être la réponse acceptée ... car il répond à la question (bien). – YvesLeBorg