错误:无法比较的类型:布尔值和<null>

时间:2017-07-20 15:50:59

标签: java android

if(savedInstanceState.getBoolean("mybool") == null)

我收到错误error: incomparable types: boolean and <null>

我想检查mybool是否不存在,我该怎么做?

我的onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);}

在我的代码的其他地方:

savedInstanceState.putBoolean("mybool", true);  

4 个答案:

答案 0 :(得分:1)

尝试使用布尔而不是布尔值,即使用基类型而不是类。我不建议这样做。 Boolean应为true或false。

答案 1 :(得分:1)

如果要检查"mybool"对象中是否存在Bundle

if (!savedInstanceState.containsKey("mybool")) {
    // your code here
}

答案 2 :(得分:1)

docs表示var filteredArray = array.filter(function(obj){ return obj.property1 === 1; }) 返回getBoolean(String key),即原始类型。原始类型永远不会boolean。在这种情况下,它可以是nulltrue。与包装类型 false相比,可以Boolean

此外,文档说如果密钥不存在,此方法只返回null

如果您想检查false是否存在,请改用mybool。 (再次参考docs

答案 3 :(得分:0)

您遇到的这个问题是您对原语如何运作的理解。原始类型(包括布尔值)不能为空。即使您在定义变量时没有为它们赋值,也会为它们分配一个值。

对于基本类型boolean,如果不为变量赋值布尔值,则在初始化时将该值指定为false。有关如何处理基元以及它们的默认值是什么的更多信息,请参阅here