我的活动不承认文本相等

时间:2015-08-25 03:31:28

标签: android database r.java-file equals-operator

有人可以帮助我,我在这里自杀了。所以在我的活动中我有这个代码,应用程序不断显示CurrentQ与答案不等(currentQ.getODG() != answer.getText()) 我可以通过Log.dat看到Log.d,单词是相同的。我无法理解我做错了什么。

08-25 05:28:45.125:D / yourans(25316):naživotumrakunaživotumraku                    这是来自log cat

RadioGroup grp = (RadioGroup) findViewById(R.id.radioGroup1);
    answer = (RadioButton) findViewById(grp.getCheckedRadioButtonId());
    Log.d("yourans", currentQ.getODG() + " " + answer.getText());
    if (currentQ.getODG().equals(answer.getText())) {
        answer.setBackgroundResource(R.drawable.radiotocan);
        Toast poruka1 = Toast.makeText(getApplicationContext(), "Točno!",
                Toast.LENGTH_LONG);
        View vieew1 = poruka1.getView();
        // vieew.setBackgroundColor(Color.parseColor("#BD8BDC"));
        vieew1.setBackgroundResource(R.drawable.toast1);
        poruka1.setView(vieew1);
        poruka1.setGravity(Gravity.CENTER_HORIZONTAL, 1, 1);
        poruka1.show();

        score1++;
        Log.d("score1", "Your score" + score1);

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {

                answer.setBackgroundResource(R.drawable.radiomain);
            }
        }, 300);
    }

    else if (currentQ.getODG() != answer.getText()) {

        answer.setBackgroundResource(R.drawable.radionetocan);
        Toast poruka2 = Toast.makeText(getApplicationContext(),
                "Netočno, točan odgovor je:" + currentQ.getODG(),
                Toast.LENGTH_LONG);
        View vieew2 = poruka2.getView();
        // vieew.setBackgroundColor(Color.parseColor("#BD8BDC"));
        vieew2.setBackgroundResource(R.drawable.toast);
        poruka2.setView(vieew2);
        poruka2.setGravity(Gravity.CENTER_HORIZONTAL, 1, 1);
        poruka2.show();
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {

                answer.setBackgroundResource(R.drawable.radiomain);
            }
        }, 300);
    }

2 个答案:

答案 0 :(得分:1)

尝试

if(currentQ.getODG().equalsIgnoreCase(answer.getText()))

而不是

if(currentQ.getODG()!=answer.getText())

希望它有所帮助!

答案 1 :(得分:1)

Java使用双等号来检查两个变量指向的对象是否是同一个对象,不是它们是否相同。由于两个String都是由两个单独的方法调用返回的,因此它们永远不会成为同一个对象。

相反,您需要使用String类中的一种相等测试方法:

  • .equals(String b)测试两个字符串是否完全相同。
  • .equalsIgnoreCase(String b)测试两个字符串是否相同,忽略它们是大写还是小写。

您可以在String class的文档中找到更多选项,只需查看public methods列表。

在您的情况下,请更改此行:

else if (currentQ.getODG() != answer.getText()) {

读起来像:

else if (!currentQ.getODG().equals(answer.getText())) {

但为了更灵活地识别答案,请使用.equalsIgnoreCase(),如下所示:

else if (!currentQ.getODG().equalsIgnoreCase(answer.getText())) {