[英]Android screen goes black on while loop
我的活動布局有多項選擇題。 我的目標是只需要使用一個活動,就可以在回答每個問題后用新的選擇刷新布局。 但是,我將其布置在如下所示的while loop
中,我希望單選按鈕的onClickListener
會暫停while循環並等待用戶選擇一個選項,然后相應地更新UI,但屏幕只是變黑。
我已經嘗試過使用調試器,並且一旦進入while循環,它就會停止,但是我不知道為什么。
private void play(){
int questionCount = 1;
while(questionCount < 20) {
Question question = new Question();
final Game game = new Game();
String[] questions = new String[5];
final int temp = questionCount;
questions = game.getQuestions(questionCount);
A.setText(questions[0]);
B.setText(questions[1]);
C.setText(questions[2]);
D.setText(questions[3]);
E.setText(questions[4]);
group.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int answer = group.getCheckedRadioButtonId();
boolean correct = game.checkAnswer(answer, temp);
}
});
questionCount++;
}
}
代替使用循環,使用一種邏輯,該邏輯將在單擊單選按鈕之一時使用新問題來更新屏幕,即,屏幕應通過onClickListener
的調用而不是while
循環來使用新問題來更新。
Android具有自己的事件循環,因此您無需創建自己的事件循環。
更好的實現方法是在Activity的onCreate方法中設置視圖以顯示初始問題,並為答案按鈕設置OnClickListener。 然后,該點擊偵聽器可以調用一個類來處理答案檢查並獲取下一個問題。
例:
class QuizManager {
private int mCurrentQuestion;
String[] mQuestions;
//TODO: create constructor to initialize variables
public bool checkAnswer(int answer){
//TODO: check answer logic
return isAnswerCorrect;
}
public String getNextQuestion(){
mCurrentQuestion++;
//TODO: handle the case for the last question
return mQuestions[mCurrentQuestion];
}
}
現在您的方法可能如下所示:
private void play(){
//This should probably be a member variable in your Activity
QuizManager manager = new QuizManager();
mQuestionTextView.setText(getNextQuestion();
group.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int answer = group.getCheckedRadioButtonId();
if (manager.checkAnswer(answer)){
mQuestionTextView.setText(getNextQuestion());
}
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.