java - 测试安卓:text produces different results depending if it has been modified

标签 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);
    return( calc.getText() == "0" ); // false
    ----
    calc.setText( "0" );
    return( calc.getText() == "0" ); // true

为什么会发生这种情况?如何检查 calc.getText() 是否为 0?

最佳答案

你永远不会比较对象(StringCharSequence的子类,而CharSequenceObject的子类,我建议使用它们而不是 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/

相关文章:

java - 使用 JTextArea 模拟文本控制台

java - spring security认证添加子域

android - 是否可以使用 JSON 在 LibGDX 的 TextButtonStyle 中使用两种字体?

PHP gettext() 最大翻译次数?

java - 如何在删除某些字符时使用 getText

python - Mac OS X 上的 pygettext.py 和 msgfmt.py

java - Scala 中可变 HashSet 类的更新方法

java - Java中int的范围

android - 在 Android Kotlin 中定义自定义数组类型的大小

从底部滚动到顶部的Android ListView?