0

ユーザーに質問と4つの選択肢を提示するクイズアプリケーションを作成しています。ユーザーが選択肢をクリックすると、アプリは正しい選択肢の色を緑に、間違った選択肢の色を赤に変更する必要があります。次に、次の質問を表示する前に1秒待つ必要があります。

問題は、色の変更が行われないことです(最後の質問を除く)。その理由がわかりません。私android.os.SystemClock.sleep(1000)はそれと関係があることを知っています。

私がどこで間違っているのか、または私がこれを間違った方法で行っているのか教えていただければ幸いです。ありがとう :)

public void onClick(View v) {
    setButtonsEnabled(false);
    int answer = Integer.parseInt(v.getTag().toString());
    int correct = question.getCorrectAnswer();

    if(answer == correct)
        numCorrect++;
    highlightAnswer(answer,correct,false);
    android.os.SystemClock.sleep(1000);

    MCQuestion next = getRandomQuestion();
    if(next != null) {
        question = next;
        highlightAnswer(answer,correct,true);
        displayQuestion();
        setButtonsEnabled(true);
    }
    else {
        float percentage = 100*(numCorrect/questionsList.size());
        QuizTimeApplication.setScore(percentage);
        Intent scoreIntent = new Intent(QuestionActivity.this,ScoreActivity.class);
        startActivity(scoreIntent);
    }
}

private void setButtonsEnabled(boolean enable) {
    for(Button b: buttons)
        b.setEnabled(enable);
}

private void highlightAnswer(int answer, int correct, boolean undo) {
    if(undo) {
        for(Button button : buttons) {
            button.setTextColor(getResources().getColor(R.color.white));
            button.setTextSize(FONT_SIZE_NORMAL);
        }
        return;
    }
    buttons[correct].setTextColor(getResources().getColor(R.color.green));
    buttons[correct].setTextSize(FONT_SIZE_BIG);
    if(answer!=correct) {
        buttons[answer].setTextColor(getResources().getColor(R.color.red));
        buttons[answer].setTextSize(FONT_SIZE_BIG);
    }
}
4

1 に答える 1

3
SystemClock.sleep(1000);

予期しない動作が発生し、要件に対して適切に機能しない場合があります。以下のような遅延のあるハンドラーを使用することをお勧めします。

Handler h = new Handler();
h.postDelayed(new Runnable(){

@Override
public void run()
{
//your code that has to be run after a delay of time. in your case the code after SystemClock.sleep(1000);
},YOUR_DELAY_IN_MILLISECONDS
);
于 2012-12-24T12:34:58.937 に答える