2013-03-06 98 views
1

我想設置一個圖像從字節到位圖,並將其設置爲一個imageView,但我得到一個空指針異常,只要我將它設置爲imageView,對不起noobob提問:我是剛剛與字節新位圖Byte Array to Bitmap Image android

下面的代碼:

iv = (ImageView)findViewById(R.id.imageView1); 
    fileObject.getDataInBackground(new GetDataCallback() { 
        public void done(byte[] data, ParseException e) { 
         if (e == null) { 
         // use data for something 
         Bitmap bmp=BitmapFactory.decodeByteArray(data,0,data.length); 
         Log.d("test", " "+bmp.toString()); 
         iv.setImageBitmap(bmp); <----- here getting error 
         } else { 
         Log.d("test", "There was a problem downloading the data."); 
         } 
        } 
        }); 

IV是在類局部聲明。 在此先感謝您的幫助。

這裏是我的logcat的要求:

03-06 20:15:46.417: E/AndroidRuntime(388): FATAL EXCEPTION: main 
03-06 20:15:46.417: E/AndroidRuntime(388): java.lang.NullPointerException 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.shop.browser.ItemInfoActivity$1$1.done(ItemInfoActivity.java:115) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.parse.ParseFile$2.done(ParseFile.java:396) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.parse.GetDataCallback.internalDone(GetDataCallback.java:21) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.parse.GetDataCallback.internalDone(GetDataCallback.java:1) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.parse.BackgroundTask.onPostExecute(BackgroundTask.java:50) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.parse.BackgroundTask.onPostExecute(BackgroundTask.java:1) 
03-06 20:15:46.417: E/AndroidRuntime(388): at android.os.AsyncTask.finish(AsyncTask.java:417) 
03-06 20:15:46.417: E/AndroidRuntime(388): at android.os.AsyncTask.access$300(AsyncTask.java:127) 
03-06 20:15:46.417: E/AndroidRuntime(388): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
03-06 20:15:46.417: E/AndroidRuntime(388): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 20:15:46.417: E/AndroidRuntime(388): at android.os.Looper.loop(Looper.java:123) 
03-06 20:15:46.417: E/AndroidRuntime(388): at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-06 20:15:46.417: E/AndroidRuntime(388): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 20:15:46.417: E/AndroidRuntime(388): at java.lang.reflect.Method.invoke(Method.java:521) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-06 20:15:46.417: E/AndroidRuntime(388): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-06 20:15:46.417: E/AndroidRuntime(388): at dalvik.system.NativeStart.main(Native Method) 
+0

請提供您的logcat – Triode 2013-03-06 12:29:45

+0

似乎IV爲空在這裏。請檢查你是否投了rig rig id ..提供logcat數據以及 – stinepike 2013-03-06 12:31:00

+0

用'null'參數調用'setImageBitmap'是可以接受的,所以在你的情況下'iv'實際上是'null'。確保你的佈局中有一個ID爲'R.id.imageView1'的ImageView。 – 2013-03-06 12:31:10

回答

4
Bitmap bmp = intent.getExtras().get("data"); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 
  1. 使用前這個上面的代碼檢查字節組大小,如果他們再這樣的方式對圖像進行解碼。
  2. 還有一件事也記得UI是不可能的線程後臺更改
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray , 0, byteArray .length); 
iv.setImageBitmap(bitmap);