来自android按钮的Gettext返回“”

时间:2014-03-08 05:02:17

标签: java android eclipse

我正在尝试使用带阵列的4个按钮创建一个多项选择测验。我无法从按钮文本中获取变量

我的按钮text: buttonA: Obama, buttonB: Lincoln, buttonC: Washington, buttonD: Bush 正确答案是奥巴马(buttonA)

当我将答案行上的代码更改为answer = "Obama";(注释行)时,它可以正常工作。但是,当我从gettext()更改为buttonA text时,它无效。

我从gettext()检查了答案变量,它返回“”

请指教,谢谢

这是代码

package com.trivia;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MenuWho extends Activity {
    private String keyanswer ,answer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layoutwho);


        Button buttons[] = new Button[4];
        buttons[0] = (Button)findViewById(R.id.buttonA);
        buttons[1] = (Button)findViewById(R.id.buttonB);
        buttons[2] = (Button)findViewById(R.id.buttonC);
        buttons[3] = (Button)findViewById(R.id.buttonD);

        keyanswer = "Obama";
        answer = "";
    }

    public void cekanswer (View view) {

        Button selectedbutton = (Button) view;
           switch (selectedbutton.getId())
           {
              case R.id.buttonA:
                  //answer = "Obama";
                  answer = selectedbutton.getText().toString();
                  break;

              case R.id.buttonB:
                  answer = (String) selectedbutton.getText();
                  break;

              case R.id.buttonC:
                  answer = (String) selectedbutton.getText();
                  break;

              case R.id.buttonD:
                  answer = (String) selectedbutton.getText();
                  break;
           }

           //cek answer
        if (answer == keyanswer)
                {
            Toast.makeText(this,"Correct !", Toast.LENGTH_LONG).show();
                }
            else {
                Toast.makeText(this,"Wrong !", Toast.LENGTH_LONG).show();
                }
}

}

3 个答案:

答案 0 :(得分:1)

用户answer.equals(keyanswer)Equals检查strings的数据,==仅检查引用是否相同。

答案 1 :(得分:1)

使用Java中的字符串,仅使用==查看引用是否相同。您必须使用方法.equals()来查看字符串的实际数据是否相同。

这是关于这个主题的另一篇SO帖子 .equals() vs ==

Java文档..

String#equals

因此,请特别针对您的答案,将行if (answer == keyanswer)更改为if (answer.equals(keyanswer)){//do work}

答案 2 :(得分:1)

if (answer == keyanswer)

这是比较两个字符串的错误编程。你需要使用这个

if (answer.equals(keyanswer))

if(answer.equalsIgnoreCase(keyanswer))