【问题标题】:Android Studio Debugging optionsAndroid Studio 调试选项
【发布时间】: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


【解决方案1】:

感谢您的建议,现已解决问题 - 将来可能对某人有所帮助!

我有一个带有 xml 设置的 ImageView:

 android:layout_height="400dp"
 android:layout_alignBottom="@+id/value_title"

所以这锚定了 ImageView 的底部,并且 400dp 的高度大于显示器上的可用空间(??ImageView 伸出顶部但被截断了??)

我相信在 sdk 23 之前,我放入框中的位图是底部对齐的,我可以毫无问题地看到它,因为位图的高度大约是 ImageView 高度的一半,并且完美地填充了可见的 ImageView。

从 sdk 23 开始,位图似乎是顶部对齐的,因此图像是不可见的,因为位图位于可视区域上方,而我只能看到 ImageView 的空白底部。

通过降低 ImageView 的高度来修复它:

 android:layout_height="106dp"

【讨论】:

    猜你喜欢
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    相关资源
    最近更新 更多