首页 > 解决方案 > 用户定义的 goClicked 函数未执行。建议我一个解决方案

问题描述

“goClicked”函数是“Go”按钮的 onClick 函数,但是当我单击“Go”按钮时它没有执行(我可以这么说是因为 toast 没有出现),直到我在“ goClicked”功能。我只粘贴 2 个函数“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();
}

标签: javaandroid

解决方案


这是因为您正在使用带有以下代码的无限循环:

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

}

代码将阻塞所有其他指令,直到它发现counterRunning更改为false while 块内。但它从未发生过。因此无限循环。


推荐阅读