我在我的代码中遇到了这个问题,但我不明白为什么。基本上我在 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?
最佳答案
你永远不会比较对象(String
是CharSequence
的子类,而CharSequence
是Object
的子类,我建议使用它们而不是 CharSequence
)和 ==
,因为它比较的是引用,而不是实际的对象内容。所有对象都有一个 equals() 方法,但字符串肯定会自定义它(覆盖)以实现检查要比较的字符串是否相同。
而是执行 calc.getText().toString().equals ("0");
所以就其发生的原因而言 - Android 创建一个对象,然后当您指定“0”时,您会创建另一个对象。使用 equals()
可以解决这个问题,因为它首先检查内容,然后给出结果(true/false)。
关于java - 测试安卓:text produces different results depending if it has been modified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14086742/