2012-03-19 50 views
-1

我在Sqlite的BLOB列中插入一個位圖數據(transed byte []數組)。
我使用此源來獲取數據。在Android中獲取BLOB數據,爲空例外

//Get the data 
byte[] byteArray = helper.getPicture(appWidgetId); 
//Change byte[] data to Bitmap 
Bitmap bmPicture = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 

但Android的顯示出來的錯誤信息,它的位圖是空
所以我添加檢驗源。

//Get the data 
byte[] byteArray = helper.getPicture(appWidgetId); 
//Check, If byte is not null 
if (byteArray != null) { 
//Change it to Bitmap 
    Bitmap bmPicture = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
} 

這是完美...
我不明白爲什麼加「如果源」可以加載數據。
爲什麼不添加'如果源'無法加載數據。

它看起來像接口...:<

+0

是您helper.getPicture(appWidgetId)反應;一個異步調用?如果沒有,如果陳述應該沒有區別。 – yorkw 2012-03-20 00:10:07

回答

0

添加一些記錄和檢查,如果/當你避免與你的情況下發生if

if (byteArray != null) { 
    //Change it to Bitmap 
    Bitmap bmPicture = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
    Log.d("TAG", "it worked :)"); 
} else { 
    Log.d("TAG", "it's null :("); 
} 
1

我認爲你必須調試你的應用程序。在正確的地方設置一些斷點並繼續。這是在運行時計算變量值的最簡單方法。我認爲有什麼問題:

byte[] byteArray = helper.getPicture(appWidgetId); 

這種方法顯然不會像預期的那樣有效,因此深入研究一下。

if語句不會使錯誤的行爲消失,只有在getPicture方法返回有效結果時纔會顯示成功。所以在一個空結果的情況下,你什麼也看不到,對吧?

另一個建議使用異常弄清楚的時候出事了,所以你可以在意外行爲;-)