Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓:按钮动作怪异_Java_Android_Button_Textview - Fatal编程技术网

Java 安卓:按钮动作怪异

Java 安卓:按钮动作怪异,java,android,button,textview,Java,Android,Button,Textview,上面的代码就像一个琐事游戏。当您单击getQuestion按钮时,您会看到一个问题和三个按钮,其中有三个不同的答案。如果你点击右边的按钮,它会说它是对的,并给你另一个问题。如果你回答错了,它会说你错了,并给你另一个问题。它起作用了。然而,问题是,有时我需要点击按钮几次,以获得其他问题和其他答案。有什么想法吗?您是否尝试过在代码中添加断点,并在调试模式下运行它,以锁定发生异常的位置?将断点添加到您的按钮单击、您决定要做什么、您输出信息的位置等等。如果有,请告诉我们您看到了什么。您的确切意思是什么?

上面的代码就像一个琐事游戏。当您单击getQuestion按钮时,您会看到一个问题和三个按钮,其中有三个不同的答案。如果你点击右边的按钮,它会说它是对的,并给你另一个问题。如果你回答错了,它会说你错了,并给你另一个问题。它起作用了。然而,问题是,有时我需要点击按钮几次,以获得其他问题和其他答案。有什么想法吗?

您是否尝试过在代码中添加断点,并在调试模式下运行它,以锁定发生异常的位置?将断点添加到您的按钮单击、您决定要做什么、您输出信息的位置等等。如果有,请告诉我们您看到了什么。

您的确切意思是什么?按钮确实起作用,但您必须多次单击它们才能更改文本
package com.example.artru_000.question;

import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Random;


public class questioninterface extends ActionBarActivity {
    public static final int QUESTIONS_LENGTH = 50;

    public void setQuestion() {
        for (Questions e : Questions.values()) {
            if (random(QUESTIONS_LENGTH) == e.order) {
                currentQuestion = e.question;
                correctAnswer = e.correctAnswer;
                answer1 = e.answer1;
                answer2 = e.answer2;
                clearWidgetsText();
                setWidgetsText();
                return;
            }
        }
    }

    public void clearWidgetsText() {
        firstAnswer.setText("");
        secondAnswer.setText("");
        thirdAnswer.setText("");
        question.setText("");
    }

    public void setWidgetsText() {
        question.setText(currentQuestion);
        switch (random(2)) {
            case 0:
                firstAnswer.setText(correctAnswer);
                secondAnswer.setText(answer1);
                thirdAnswer.setText(answer2);
                break;
            case 1:
                thirdAnswer.setText(correctAnswer);
                secondAnswer.setText(answer1);
                firstAnswer.setText(answer2);
                break;
            case 2:
                secondAnswer.setText(correctAnswer);
                firstAnswer.setText(answer1);
                thirdAnswer.setText(answer2);
                break;
        }
    }

    Random rand = new Random();

    String currentQuestion, correctAnswer, answer1, answer2;

    public int random(int range) {
        return rand.nextInt(range);
    }

    Button getQuestion;
    Button firstAnswer;
    Button secondAnswer;
    Button thirdAnswer;
    TextView answerStatus;
    TextView question;

    public void setAnswerStatus(String status) {
        if(status.equalsIgnoreCase("Right")) {
            answerStatus.setText("Right");
            answerStatus.setTextColor(Color.GREEN);
        }
        if(status.equalsIgnoreCase("wrong")) {
            answerStatus.setText("Wrong");
            answerStatus.setTextColor(Color.RED);
        }
    }
    public void buttonPushes() {
        getQuestion.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                setQuestion();
                return;
            }
        });

        firstAnswer.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(firstAnswer.getText().toString().equalsIgnoreCase(correctAnswer)) {
                    setAnswerStatus("right");
                    setQuestion();
                    return;
                } else {
                    setAnswerStatus("wrong");
                    setQuestion();
                    return;
                }
            }
        });

        secondAnswer.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(secondAnswer.getText().toString().equalsIgnoreCase(correctAnswer)) {
                    setAnswerStatus("right");
                    setQuestion();
                    return;
                } else {
                    setAnswerStatus("wrong");
                    setQuestion();
                    return;
                }
            }
        });

        thirdAnswer.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(thirdAnswer.getText().toString().equalsIgnoreCase(correctAnswer)) {
                    setAnswerStatus("right");
                    setQuestion();
                    return;
                } else {
                    setAnswerStatus("wrong");
                    setQuestion();
                    return;
                }
            }
        });
    }


    private void construct() {
        getQuestion = (Button) findViewById(R.id.get_question);
        firstAnswer = (Button) findViewById(R.id.answer1);
        secondAnswer = (Button) findViewById(R.id.answer2);
        thirdAnswer = (Button) findViewById(R.id.answer3);
        answerStatus = (TextView) findViewById(R.id.wrongright);
        question = (TextView) findViewById(R.id.question);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_questioninterface);
        construct();
        buttonPushes();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_questioninterface, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}