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);
答案 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
。在这种情况下,它可以是null
或true
。与包装类型 false
相比,可以为Boolean
。
此外,文档说如果密钥不存在,此方法只返回null
。
如果您想检查false
是否存在,请改用mybool
。 (再次参考docs)
答案 3 :(得分:0)
您遇到的这个问题是您对原语如何运作的理解。原始类型(包括布尔值)不能为空。即使您在定义变量时没有为它们赋值,也会为它们分配一个值。
对于基本类型boolean,如果不为变量赋值布尔值,则在初始化时将该值指定为false。有关如何处理基元以及它们的默认值是什么的更多信息,请参阅here。