java - "Length must be at least 1 (was -1)"是什么原因导致此问题以及如何修复它?

标签 java android android-studio

我收到这行代码的错误:

enter image description here

这就是 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,因此它向您显示 可能该值为null或为空。如果您确定颜色 String 不为空,您可以像这样抑制它:

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

关于java - "Length must be at least 1 (was -1)"是什么原因导致此问题以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610787/

相关文章:

java - 使用HashMap创建动态函数调用

java - Java中的年龄异常错误

java - 如果 hashString 是纳米时间,Hashing.crc32 是否会生成一个唯一的字符串?

java - 如何将 View 移动到屏幕最近的边缘?

java - 如何显示时间戳之间超过 24 小时的时差

android - 如何将 ImageView 置于 CardView 之上?请查看详情

android - 当x的值是连续的时,如何使用when(x){}?

android - 针对不同设备应用分辨率

java - Android studio 按钮将我带到错误的 Activity

Java:获取 "hh:MM:ss a"格式的时间