2012-03-19 2 views
-1

BLOB列のSqliteにビットマップデータ(Transed byte []配列)を挿入します。
私はこのソースを使用してデータを取得します。AndroidでのBLOBデータの取得、null例外

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

しかし、エラーメッセージを表示アンドロイド、それはビットマップだだから私は、チェックソースを追加
nullです。

//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); 
} 

これは、追加した理由「ソースがあれば」データをロードすることができ、私は理解できない...
最適です。
「ソース」がデータを読み込めない場合はなぜ追加しませんか。

そのインターフェイス...のようになります/場合は、あなたのifを防ぐケースが発生したときに<

+0

はあなたhelper.getPicture(appWidgetId)です。非同期呼び出し?そうでない場合、ステートメントは違いを生じさせないはずです。 – yorkw

答えて

0

は、いくつかのログを追加して確認してください。

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メソッドが有効な結果を返した場合にのみ成功を示しています。だからnullの結果の場合、あなたは何も見ません、そうですか?

何かが間違っていたときに予期しない動作に反応することができますので、把握するもう一つのアドバイス使用の例外が;-)

関連する問題