2013-03-06 4 views
1

Я пытаюсь установить изображение из байта в растровое изображение и установить его в imageView, но я получаю исключение из null-указателя всякий раз, когда я устанавливаю его в imageView, извините за noob вопрос я просто новый с байтом и растровые изображения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

+0

кажется IV равна нулю здесь. Пожалуйста, убедитесь, что вы выбрали идентификатор rigth. Предоставьте данные logcat, а также – stinepike

+0

, допустимо вызывать 'setImageBitmap' с аргументом' null', поэтому в вашем случае 'iv' фактически' null'. убедитесь, что в вашем макете есть «ImageView» с идентификатором «R.id.imageView1». –

ответ

4
Bitmap bmp = intent.getExtras().get("data"); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 
  1. перед использованием этого кода выше, проверить размер ByteArray, если они затем декодировать изображение, как таким образом.
  2. И одна вещь также помнить, интерфейс не представляется возможным изменить в потоке фона
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray , 0, byteArray .length); 
iv.setImageBitmap(bitmap);