我在我的代码上遇到这个问题,我无法弄清楚原因。基本上我在XML上将android:text设置为“0”,当用getText检查它是否为“0”时它返回false。如果我使用setText将其设置为0并再次检查它将返回true。
<TextView android:id="@+id/edit_text"
android:text="0" />
TextView calc = (TextView) findViewById(R.id.edit_text);
return( calc.getText() == "0" ); // false
----
calc.setText( "0" );
return( calc.getText() == "0" ); // true
为什么会这样?如何检查calc.getText()是否为0?
答案 0 :(得分:2)
你从不比较对象(String
是CharSequence
的子类,它是Object
的子类,我建议使用它们代替CharSequence
) ==
,因为它比较了引用,而不是实际的Object内容。所有对象都有一个equals()
方法,但是Strings会自定义它(覆盖)以实现检查比较字符串是否相同。
取而代之的是calc.getText().toString().equals ("0");
因此,就其发生的原因而言 - 当您指定“0”时,Android会生成一个对象,您创建另一个对象。使用equals()
解决了这个问题,因为它首先检查内容然后给出结果(true / false)。