我尝试了不同的方法来解决这个问题,但我无法修复它。我试图让一个复选框的这种方法里面传递了一个对象的布尔值:如何从对象获取布尔值
public boolean onPreferenceChange(Preference preference, Object newValue)
{
final String key = preference.getKey();
referenceKey=key;
Boolean changedValue=!(((Boolean)newValue).booleanValue()); //ClassCastException occurs here
}
我得到:
java.lang.ClassCastException:java.lang.String中不能相反,它铸造的转换为java.lang.Boolean的
首先假设newValue是Boolean类型的。你可以使用instanceof来检查newValue的类型。如果它是一个布尔类型,使用autounboxing,你没有问题。如果它是一个字符串,则可以比较(忽略大小写)值“true”,“false”,然后创建适当的布尔表示形式。 – horbags