java - 用户定义的 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();
}
解决方案
这是因为您正在使用带有以下代码的无限循环:
while (counterRunning) {
int sum = generateQuestion();
pickOption = generateOptions(sum);
}
代码将阻塞所有其他指令,直到它发现counterRunning
更改为false
while 块内。但它从未发生过。因此无限循环。
推荐阅读
- python - Python破折号回调函数
- django - 如何从 Django View 将两个列表返回给 chartjs
- laravel - 在 Laravel 中编辑了开箱即用的身份验证表单,但现在不会提交到数据库
- java - 在表格中实现一个按钮,单击时打开一个对话框,将特定单元格的值显示为下拉/复选框按钮
- javascript - 如何根据类别从状态 onChange 中过滤数组并恢复为默认值?
- apache-pig - 试图将 long 转换为 ToDate 格式
- reactjs - React 是否加载所有组件第一个打开页面?
- android - 在我的游戏中实例化 gdx-pay purchaseManager 时遇到问题
- graph - 从源到目的地的最短路径,对遍历的顶点顺序有限制
- sql - 我想编写一个从数据库中提取数据然后操作该数据的 sqlcmd 脚本