我在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'无法加载数据。
它看起来像界面......:<
答案 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 :(");
}