【问题标题】:Android: IF statement with radio buttons not workingAndroid:带有单选按钮的 IF 语句不起作用
【发布时间】:2012-04-19 12:19:51
【问题描述】:

我正在尝试制作一个测验应用程序,因此有 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 也会始终执行。

有谁知道可能发生的事情或更好的方法吗?

【问题讨论】:

    标签: java android


    【解决方案1】:

    您没有正确比较字符串。

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

    在这里阅读:http://www.javabeginner.com/learn-java/java-string-comparison

    【讨论】:

    • 谢谢。我也去看看那个网站。
    【解决方案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();
        }
    }
    

    【讨论】:

    • 谢谢,这正是问题所在。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      如果你想在 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();
      }
      

      【讨论】:

        猜你喜欢
        • 2021-07-03
        • 1970-01-01
        • 2013-08-03
        • 2013-07-21
        • 2016-08-30
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多