определенная пользователем функция goClicked не выполняется.Предложите мне решение

#java #android

#java #Android

Вопрос:

Функция «goClicked» — это функция onClick для кнопки «Go», но она не выполняется, когда я нажимаю на кнопку «Go» (я могу сказать это, потому что всплывающее окно не отображается), пока я не прокомментирую цикл while в функции «goClicked». Я вставляю код только для двух функций «goClicked» и «countdown», потому что это единственные функции, которые изменяют переменную «counterRunning».

     public void goClicked(View view) {
    afterGoPressed();
    countDown();
    correctCount = 0;
    totalCount = 0;
    TextView time = (TextView) findViewById(R.id.time);
    while (counterRunning) {
        int sum = generateQuestion();
        pickOption = generateOptions(sum);

    }

}
 public void countDown() {
            counterRunning = true;
            final TextView time = (TextView) findViewById(R.id.time);
            final Button tryAgain = (Button) findViewById(R.id.tryAgain);
            final TextView result = (TextView) findViewById(R.id.result);
            final TextView score = (TextView) findViewById(R.id.score);
            int secondsLeft = 30;

            time.setText(secondsLeft "");
            CountDownTimer countDownTimer = new CountDownTimer(30000,1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    time.setText(millisUntilFinished/1000   "");
                }

                @Override
                public void onFinish() {
                    tryAgain.setVisibility(View.VISIBLE);
                    result.setText("Your score: "   score.getText());
                    result.setVisibility(View.VISIBLE);
                    counterRunning = false;
                }
            }.start();
}
  

Ответ №1:

Это потому, что вы используете бесконечный цикл со следующим кодом:

 while (counterRunning) {
    int sum = generateQuestion();
    pickOption = generateOptions(sum);

}
  

код будет блокировать все остальные инструкции, пока он не найдет, что counterRunning изменено на false внутри блока while. Но этого так и не произошло. Отсюда бесконечный цикл.

Комментарии:

1. итак, как это преодолеть?