0

我在我的代码上遇到了这个问题,我不知道为什么。基本上我在 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?

4

1 回答 1

2

您永远不会将 Objects (String是 的子类的CharSequence子类Object,我建议使用它们而不是CharSequence) 与==进行比较,因为它比较的是引用,而不是实际的 Object 内容。所有对象都有一个equals()方法,但字符串肯定会自定义它(覆盖)以实现检查要比较的字符串是否相同。

而是做calc.getText().toString().equals ("0");

因此,就它发生的原因而言 - Android 创建一个对象,然后当您指定“0”时,您创建另一个对象。使用equals()解决了这个问题,因为它首先检查内容然后给出结果(真/假)。

于 2012-12-29T23:14:59.177 回答