2010-08-19 8 views
22

나는 onCreate() 메서드를 가진 Main 클래스를 가지고 있습니다. 해당 메서드에서 MapFile 클래스 'object.and 만든 해당 readFile()readIndex() 메서드. readIndex() 메서드에서 나는이라는 이름의 또 다른 클래스를 호출하는데, 여기서 바이너리 파일의 이미지 타일을 읽었고 이미지를 표시해야했습니다.byteArray의 디스플레이 이미지

질문 : 코드를 onCreate(Bundle savedInstanceStare) 방법으로 삽입하지 않고 어떻게 이미지를 표시 할 수 있습니까? 나는이 방법을 시도하고있다. 그러나 첫번째 줄에서 그것은 나에게 NullPointerException를 준다.

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

답변

6

문제점은 byteArray가 아니라 findViewById입니다. NPE가 첫 번째 줄에 있다고 말하면서. 당신이 그것을 호출하는 두 가지 방법이이 방법을 주위에 규칙이 있습니다 : 어느 쪽이든 당신은 이미 당신이 setContentView
에서 호출 레이아웃에있는 뷰를 쿼리하는 데 사용할

가 아니면 레이아웃에 포함 된보기에를 사용 레이아웃 인플레이터로 수동 팽창

setContentView의 레이아웃 이외의 레이아웃에서 뷰를 호출하려고하면 null을 반환합니다.

+0

당신이 나에게 몇 가지 예제를 적어주세요 수 있습니다 .... 내가 이해할 수 없었다. – sajjoo

+0

선을 제거하십시오 ImageView image = (ImageView) findViewById (android.R.id.icon); ImageView로 바꾸기 image = 새 ImageView (this); 그리고 imageBitmap을 설정 한 후 ImageView를 레이아웃에 추가하십시오. – Sephy

+0

오 감사합니다. sephy – sajjoo

32

안드로이드 이미지 뷰에 바이트 배열을 추가 :

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

간단하고 효율적입니다. 고맙습니다 친구 –

+0

이것은 답변을 받아 들여야합니다 ... 질문에 답변을 드리겠습니다 (잘). – YvesLeBorg

관련 문제