在Android中获取BLOB数据,null异常

时间:2012-03-19 22:47:01

标签: java android sqlite null blob

我在Sqlite中插入一个位图数据(transed byte []数组),其中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);
}

这很完美......
我无法理解为什么添加'if source'可以加载数据 为什么不添加'if source'无法加载数据。

它看起来像界面......:<

2 个答案:

答案 0 :(得分:1)

我认为你必须调试你的应用程序。在正确的位置设置一些断点并继续。这是在运行时计算变量值的最简单方法。我认为有一些问题:

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

这种方法显然有时没有按预期行事,所以深入研究这个方法。

if语句不会使错误行为消失,只有getPicture方法返回有效结果时才会显示成功。所以在null结果的情况下你什么也看不见,对吧?

另一个建议是使用异常来确定何时出现问题,以便您可以对意外行为作出反应; - )

答案 1 :(得分: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 :(");
}