比较Android按钮的文本

时间:2016-06-14 21:57:35

标签: java android boolean

我正在尝试比较按钮的文字,以决定我正在制作的Android应用中采取的行动方案。我得到一些我不明白的意外行为。

  clickMeButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (v.getId() == R.id.btnLeft) {
                Button button = (Button) v;
                String click = new String("Click me");
                String look = new String(button.getText().toString());
                Boolean check = new Boolean(look == click);
                if (button.getText().toString() == "Click me") {

变量检查返回false。为什么?在调试器中,两个项目旁边都列出了“单击我”。我在模拟器中单击的按钮显示“Click me”,其原始文本“Click me”由xml指定。

2 个答案:

答案 0 :(得分:5)

这不是我们在Java中进行字符串比较的方式。试试这个

if (button.getText().toString().equals("Click me")) {

==检查两个参数是否都是同一个对象,而equals()检查两个参数是否具有相同的值。

答案 1 :(得分:1)

如果将字符串对象与字符串对象进行比较,则可以。但是您正在将对象与char数组进行比较。对象永远不会= = char数组。对象值可以相等,但对象比较将返回false。因为这2个变量不一样。 在java中,比较字符串的最佳实践是相同的方法。

Boolean check = new Boolean(look == click); // DO NOT
Boolean check = new Boolean(look.equals(click)); // DO

if语句也是一样。

if (button.getText().toString().equals(click)){..}

编辑:这是一个很好的解释 How do I compare strings in Java?