Android:带有单选按钮的IF语句不起作用

时间:2012-04-05 18:34:57

标签: java android

我正在尝试制作一个测验应用程序,因此有5个单选按钮可能有答案,只有1个是正确的。然后是一个提交按钮,它有一个onClick =“clickMethod”来处理提交。

我的clickMethod如下所示:

public void clickMethod(View v){
                RadioGroup group1 = (RadioGroup) findViewById(R.id.radioGroup1);
                int selected = group1.getCheckedRadioButtonId();
                RadioButton button1 = (RadioButton) findViewById(selected);
                if (button1.getText()=="Right Answer")
                    Toast.makeText(this,"Correct!",Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(this,"Incorrect.",Toast.LENGTH_SHORT).show();
    }

然而,无论如何,我无法让IF声明发挥作用。如果我尝试做吐司  “button1.getText()”作为参数,它会打印“正确答案”字符串,但由于某种原因,在IF语句中它不起作用,即使我检查了正确的答案,ELSE也会一直执行。

有谁知道可能会发生什么或更好的方法吗?

4 个答案:

答案 0 :(得分:3)

您没有正确比较字符串。

  

当我们必须比较String对象时,使用==运算符   引用。如果两个String变量指向同一个对象   内存,比较返回true。否则,比较返回   假。请注意,'=='运算符不会比较内容   String对象中存在的文本。它只比较参考文献   2个字符串指向。

请在此处阅读:http://www.javabeginner.com/learn-java/java-string-comparison

答案 1 :(得分:2)

您应该使用equals String方法进行字符串比较:

public void clickMethod(View v){
    RadioGroup group1 = (RadioGroup) findViewById(R.id.radioGroup1);
    int selected = group1.getCheckedRadioButtonId();
    RadioButton button1 = (RadioButton) findViewById(selected);
    if ("Right Answer".equals(button1.getText())) {
        Toast.makeText(this,"Correct!",Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this,"Incorrect.",Toast.LENGTH_SHORT).show();
    }
}

答案 2 :(得分:1)

在Java中,您无法将字符串与==进行比较,必须使用equals()

if (button1.getText().equals("Right Answer"))

答案 3 :(得分:1)

如果要比较Java中的对象,则必须使用equals()方法而不是==运算符 ..

if (button1.getText().toString().equals("Right Answer")) {
 Toast.makeText(this,"Correct!",Toast.LENGTH_SHORT).show();
} else {
 Toast.makeText(this,"Incorrect.",Toast.LENGTH_SHORT).show();
}