Java 测试android:文本根据是否被修改产生不同的结果
我在代码中遇到了这种情况,我不知道为什么。基本上,我在XML上将android:text设置为“0”,当使用getText检查是否为“0”时,返回false。如果我使用setText将其设置为0并再次检查,它将返回trueJava 测试android:文本根据是否被修改产生不同的结果,java,android,gettext,Java,Android,Gettext,我在代码中遇到了这种情况,我不知道为什么。基本上,我在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);
<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
TextView计算=(TextView)findViewById(R.id.edit_text);
返回值(计算getText()=“0”);//假的
----
calc.setText(“0”);
返回值(计算getText()=“0”);//真的
为什么会发生这种情况?如何检查calc.getText()是否为0?您从不将对象(String
是CharSequence
的子类,它是Object
的子类,我建议使用它们而不是CharSequence
)与=
进行比较,因为这样比较的是引用,而不是实际的对象内容。所有对象都有一个equals()
方法,但是字符串明确地对其进行了自定义(重写),以实现对要比较的字符串是否相同的检查
而是执行calc.getText().toString().equals(“0”)代码>
因此,就其发生的原因而言——Android生成一个对象,然后当您指定“0”时,您创建另一个对象。使用equals()