【发布时间】:2016-08-09 08:22:12
【问题描述】:
我的 Android 应用程序出现了一个非常烦人的错误,我找不到原因(尽管可能是因为我升级到了 SDK 23)。
我正在动态引用一系列 ImageView 元素并用位图填充 ImageView:
ImageView img = (ImageView) activity.findViewById(context.getResources().getIdentifier(result.getView(), "id", context.getString(R.string.packagename)));
img.setImageBitmap(bitmap);
所有的 ImageViews 都正确填充,现在只有一个图像没有填充(但其他图像)
我怀疑图像正在填充,但随后被覆盖、隐藏、发送到后面或其他原因。
我已经在 Android Studio 中尝试了调试器,它似乎确认 ImageView 被正确引用,并且“位图”中有一个图像,但我似乎无法找到它是否随后被更改
问题 有没有办法设置调试“陷阱”以在访问资源 ID 时捕获(即我想知道我的 R.id.inv_image 何时发生更改
【问题讨论】:
-
在升级到 sdk 23 之前它是否正常工作?您是否尝试过设置不同的位图但不是动态的,例如您导入的一个静态位图?您可以放置一个 Log.w() 并记录正在加载的位图以查看发生了什么。编辑:你说所有位图都加载好了,除了一个..这是循环吗?你确定循环的执行次数和你的位图一样多吗?
-
尝试断点我会告诉你当前设置的值
-
我不确定调试,但您可以尝试记录;在您为图像视图设置位图的位置添加一个显示正在访问的 ID 的日志行,并查看输出日志,如果您看到重复的行(具有相同的 ID),那么这就是您需要挖掘的(建议)日志行包含这些参数
context.getResources().getIdentifier(result.getView(), "id", context.getString(R.string.packagename))以将其包装起来,所有日志不应显示相同的 ID 两次。 -
Tony:我不能确定 sdk23 - 问题发生在同一时间,但不确定是不是这样。我在布局底部创建了一个新的“虚拟”ImageView,当我调用上面的 img.setImageBitmap() 时,我还在虚拟图像视图中使用相同的位图 setImageBitmap - 这可以正确显示,所以我很确定我有一个有效的位图。
-
ColdFire:断点仅确认设置的 ID 和位图似乎没问题 Yazan:我想我会在每个 ImageView 上进行“查找”并记录+所有后续操作...有点费力,我希望我可以监控视图本身
标签: java android debugging android-studio