我得到这行代码的错误:
这就是getBackground()的样子:

public class MyClass {

  ...

  private String background;

  public String getBackground() {
    return background;
  }

  ...
}

我已经证实Color.parseColor需要一个字符串。为什么会发生这种情况,我怎样才能让编译器高兴呢?
这并不能阻止应用程序运行,所以也许这是一个静态分析器的事情?我试着将getbackground()的返回值放在本地,并检查它是否为非空且具有length() >= 1,但这似乎无法解决任何问题。

最佳答案

看起来很像静态分析器检查的问题。如果将String文本传递给Color#parseColor(String),则问题将消失。
静态分析器似乎不够聪明,无法推断您传入的值(即Color.parseColor("#eee");的返回值)在所有可能的情况下都是非空的,因此它向您显示该值可能是getBackground()或空的。如果您确定颜色null不为空,您可以像这样抑制它:

//noinspection ResourceType
view.setColor(Color.parseColor(model.getColor().getBackground()));

09-05 16:50