【问题标题】:obtainStyledAttributes annotated with @StyleableRes. Suppress warnings获得带有 @StyleableRes 注释的StyledAttributes。禁止警告
【发布时间】:2014-12-09 06:07:53
【问题描述】:

在查看here的答案时,我遇到了问题:

TypedArray ta = obtainStyledAttributes(R.style.MyCustomStyle, attrs);

Android Studio 似乎不允许我传入不是来自 R.styleable 资源的 int 而不收到警告。

它告诉我它需要一个 styleable 类型的资源,我认为这意味着我正在调用的代码已用 @StyleableRes annotation 注释

读取 R.style.{x} 中定义的值的最佳做法是什么?链接帖子上接受的答案可以工作并编译,但我不知道如何抑制警告。由于有警告,压制是否安全?如果有,怎么做?

【问题讨论】:

  • styleable 不是style
  • @blackbelt 正确。这就是为什么我很困惑我所链接的问题中接受的(赏金!)答案是使用一种风格并且有这么多的赞成票。
  • 其实这只是一个警告,你运行你的代码了吗?
  • 代码编译。目前,我正在使用@SuppressWarnings("all"),但这并不理想。我想在代码中明确地说“我知道这个警告,它可以被忽略”,但仅限于对获取样式属性的调用。我可以创建一个只包含该行的方法来提取 TypedArray 并注释该方法,但这似乎是一种解决方法。

标签: java android annotations android-studio android-resources


【解决方案1】:

我认为抑制这种情况的正确方法:

@SuppressWarnings("ResourceType")

当我按下 Alt-Enter 以调出警告修复并选择 检查“常量和资源类型不匹配”选项 > 禁止类时,我得到了这个提示(附截图)。

它对我有用。

由于您引用的任何代码都已编写,因此此检查的 ID 可能已更改;我简要浏览了提交日志,但找不到对它的引用。

【讨论】:

  • 感谢您的回答。我现在已经压制了那个具体的警告。将警告静音是否安全(我猜这是有原因的警告)?
  • 您可能不想一直在任何地方都将其静音。尽管有这个错误,但它确实标记了一个易于制作但难以诊断的编程错误。
  • 设置对方法的抑制就足够了,也更安全..不需要把它带到整个班级..
【解决方案2】:

您可以使用@SuppressWarnings("ResourceType") 禁止对出现问题的方法进行警告检查,或者您可以在该行之前使用//noinspection ResourceType 以避免仅在该代码行中进行检查。

【讨论】:

    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多