0
我正在寫一個測驗應用程序,向用戶提供一個問題和4個選擇。當用戶點擊選擇時,應用程序應將正確選項的顏色更改爲綠色,將錯誤選擇的顏色更改爲紅色。在顯示下一個問題之前,它應該等待一秒鐘。Android:文本顏色不變
問題是它不會做顏色變化(除了最後一個問題),我不明白爲什麼。我知道我的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);
}
}
刪除調用highlightAnswer()後的所有代碼。刪除睡眠呼叫和if,else塊。如果您打算使用亮點,那麼問題出在睡眠命令上。線程在屏幕上放置更新之前休眠。 如果是這種情況,您將需要使用AsyncTask來執行等待和回調以顯示下一個問題。 – conor