Код не работает - PullRequest
       2

Код не работает

0 голосов
/ 01 ноября 2011

В моем приложении есть список вопросов. Когда вызывается функция getctoion getfirstquestion, он случайным образом выбирает вопрос и после этого случайным образом помещает тексты на каждую из 4 кнопок (одна из них является ответом на вопрос).

Каждый раз, когда нажимается кнопка, функция checkanswer проверяет, совпадает ли текст кнопки с правильным ответом на правильный вопрос. Если это так, он удаляет текущий вопрос и вызывает функцию getfirstquestion (), чтобы изменить вопрос.

Программа работает нормально, но ничего не происходит, когда я нажимаю кнопку правильного ответа. Может кто-нибудь сказать мне, почему, и дать мне решение? Я ищу код 2 часа назад ....

    public class startgame extends Activity implements OnClickListener{

final Random rgenerator = new Random();

List<String> questionss1 = new ArrayList<String>();
String thequestion;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.level1);

    questionss1.add("Who is the actual CEO at Apple?");
    questionss1.add("Who is the actual CEO at Microsoft?");
    questionss1.add("Who is the actual CEO at Google?");
    getfirstquestion();

    Button button1 = (Button)findViewById(R.id.button1);
    button1.setOnClickListener(this);

    Button button2 = (Button)findViewById(R.id.button2);
    button2.setOnClickListener(this);
    Button button3 = (Button)findViewById(R.id.button3);
    button3.setOnClickListener(this);
    Button button4 = (Button)findViewById(R.id.button4);
    button4.setOnClickListener(this);
    }
    }

public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()){
    case R.id.button1:  

        Button button1 = (Button)findViewById(R.id.button1);
        checkanswer((String) button1.getText());

    case R.id.button2:
       Button button2 = (Button)findViewById(R.id.button2);
           checkanswer((String) button2.getText());

    case R.id.button3:
        Button button3 = (Button)findViewById(R.id.button2);
    checkanswer((String) button3.getText());

    case R.id.button4:
        Button button4 = (Button)findViewById(R.id.button2);
       checkanswer((String) button4.getText());
    }
}
public int checkanswer(String buttontext) {
    if (thequestion.equals("Who is the actual CEO at Apple?") && buttontext == "Tim Cook"){
        questionss1.remove("Who is the actual CEO at Apple?");
        getfirstquestion();
    }

    if (thequestion.equals("Who is the actual CEO at Microsoft?") && buttontext  == "Steve Ballmer"){
        questionss1.remove("Who is the actual CEO at Microsoft?");
        getfirstquestion();
    }

    if (thequestion.equals("Who is the actual CEO at Google?") && buttontext == "Eric Schmidt"){
        questionss1.remove("Who is the actual CEO at Google?");
        getfirstquestion();
    }
    return 0;
}

public void getfirstquestion(){
    //create the buttons
    Button button1 = (Button)findViewById(R.id.button1);
    Button button2 = (Button)findViewById(R.id.button2);
    Button button3 = (Button)findViewById(R.id.button3);
    Button button4 = (Button)findViewById(R.id.button4);

    thequestion = questionss1.get(rgenerator.nextInt(questionss1.size()));
    TextView question = (TextView)findViewById(R.id.textView1);
    question.setText(thequestion);
    questionss1.remove(thequestion);

    if (thequestion.equals("Who is the actual CEO at Apple?")){
        List<String> questions1res = new ArrayList<String>();
        questions1res.add("Eric Schmidt");
        questions1res.add("Steven Sinofsky");
        questions1res.add("Tim Cook");
        questions1res.add("Steve Ballmer");

        button1.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button1.getText());
        button2.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button2.getText());
        button3.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button3.getText());
        button4.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button4.getText());
    }

    if (thequestion.equals("Who is the actual CEO at Microsoft?")){
        List<String> questions1res = new ArrayList<String>();
        questions1res.add("Eric Schmidt");
        questions1res.add("Steven Sinofsky");
        questions1res.add("Tim Cook");
        questions1res.add("Steve Ballmer");

        button1.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button1.getText());
        button2.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button2.getText());
        button3.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button3.getText());
        button4.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button4.getText());
    }

    if (thequestion.equals("Who is the actual CEO at Google?")){
        List<String> questions1res = new ArrayList<String>();
        questions1res.add("Eric Schmidt");
        questions1res.add("Steven Sinofsky");
        questions1res.add("Tim Cook");
        questions1res.add("Steve Ballmer");

        button1.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button1.getText());
        button2.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button2.getText());
        button3.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button3.getText());
        button4.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button4.getText());
    }
}
    }

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

В методе checkanswer следует использовать метод equals, а не оператор ==, поскольку он сравнивает ссылки, а не содержимое объекта. то есть вместо buttontext == "Tim Cook" должно быть buttontext.equals("Tim Cook") и т. д.

Кроме того, снова просматривая ваш код, вы должны добавить в переключатель break; операторы:

switch (v.getId()){
case R.id.button1:
    Button button1 = (Button)findViewById(R.id.button1);
    checkanswer((String) button1.getText());
    break;
case R.id.button2:
    Button button2 = (Button)findViewById(R.id.button2);
    checkanswer((String) button2.getText());
    break;
case R.id.button3:
    Button button3 = (Button)findViewById(R.id.button2);
    checkanswer((String) button3.getText());
    break;
case R.id.button4:
    Button button4 = (Button)findViewById(R.id.button2);
    checkanswer((String) button4.getText());
    break;
}
1 голос
/ 01 ноября 2011

button1.setOnClickListener (это);

Этот код используется для установки кнопки OnClickListener на кнопку. Вам нужно создать экземпляр OnClickListener в вашем классе и использовать его. Переход в (это) пройдет в деятельности. В этом случае нажатие кнопки ничего не изменит.

Примерно так:

button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // do your checking here
    }
};

Попробуйте, дайте мне знать, как это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...