我編寫了一個測驗應用程序,如果我在AsyncTask中觸摸其中一個答案(如果答案正確),我將顏色設置爲綠色或將其設置爲紅色。在AsyncTask期間禁用按鈕
但現在在AsyncTask運行期間,我可以按其他按鈕,如「更改問題」按鈕或另一個答案。然後在AsyncTask完成它的工作後完成。所以下一個問題會被加載,並自動回答下一個問題,或者使用其中一個jokers。
我試圖setEnabled(false)的按鈕,但他們仍然竊聽。
我該如何預防?
private void disableOrDisableButtons(boolean boo) {
buttonAnswer1.setEnabled(boo);
buttonAnswer2.setEnabled(boo);
buttonAnswer3.setEnabled(boo);
buttonAnswer4.setEnabled(boo);
}
,在這裏我開始的AsyncTask
disableOrDisableButtons(false);
new PrepareAdapter().execute(null, null, null);
在我的AsyncTask
@Override
protected void onPreExecute() {
disableOrDisableButtons(false);
if (correctAnswerAtButton != buttonClicked) {
switch (buttonClicked) {
case 1:
buttonAnswer1.setTextColor(Color.RED);
break;
case 2:
buttonAnswer2.setTextColor(Color.RED);
break;
case 3:
buttonAnswer3.setTextColor(Color.RED);
break;
case 4:
buttonAnswer4.setTextColor(Color.RED);
break;
}
if (buttonClicked != 0) { // 0.. if second chance joker used
wrongAnswer = true;
}
}
switch (correctAnswerAtButton) {
case 1:
buttonAnswer1.setTextColor(Color.GREEN);
return;
case 2:
buttonAnswer2.setTextColor(Color.GREEN);
return;
case 3:
buttonAnswer3.setTextColor(Color.GREEN);
return;
case 4:
buttonAnswer4.setTextColor(Color.GREEN);
return;
}
}
除非是某種訓練練習,否則不要使用線程。它不是那種需要多線程的應用程序,它只是爲您創建更多的問題。 – 2012-02-21 14:13:09
那我該怎麼辦呢?感謝您的回答 – androiddevjedi 2012-02-21 14:30:22
只需在主UI線程中做所有事情。我想象所涉及的處理是相當平凡的,所以不需要保持UI線程打開。 – 2012-02-21 14:40:08