2010-08-19 18 views
22

Mam klasę Main z metodą onCreate(). w tej metodzie zrobiłem obiekt klasy MapFile. I nazwałam jego metody readFile() i readIndex(). w metodzie readIndex() wywołuję inną klasę o nazwie MapTile, gdzie czytam obrazy płytek z mojego pliku binarnego i tam muszę wyświetlić mój obraz.obraz wyświetlany z bajtu Array

Pytanie brzmi: jak mogę wyświetlić obraz bez wprowadzania mojego kodu do metody onCreate(Bundle savedInstanceStare)? Próbuję w ten sposób, ale na pierwszej linii daje mi NullPointerException.

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

Odpowiedz

6

Myślę, że Twój problem nie jest byteArray, ale findViewById. Kiedy mówisz, że NPE jest w pierwszej linii. Istnieją zasady wokół tej metodzie masz dwie opcje to nazwać:

Albo go używać do kwerendy View już masz w układzie ty zwanego w setContentView
Albo go używać na widoku zawartych w układzie ty napompowane ręcznie za pomocą nadmuchiwanego szablonu

Jeśli spróbujesz użyć go w swojej działalności, aby wywołać widok z innego układu niż ten w setContentView, który nie został zawyżony, zwróci wartość null.

+0

można proszę mi dać jakiś przykład .... I nie mógł zrozumieć. – sajjoo

+0

usuń linię ImageView image = (ImageView) findViewById (android.R.id.icon); i zamień go na ImageView image = new ImageView (this); i po ustawieniu imageBitmap, dodaj ImageView do swojego układu – Sephy

+0

ohh dzięki dużo sefy – sajjoo

32

dodanie tablicy bajtów do android 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

Proste i skuteczne; Thanx mate –

+0

to powinna być zaakceptowana odpowiedź ... ponieważ odpowiada na pytanie (dobrze). – YvesLeBorg

Powiązane problemy