Java 在我对函数中的while循环进行注释之前,onClick不起作用
我有一个函数Java 在我对函数中的while循环进行注释之前,onClick不起作用,java,android,Java,Android,我有一个函数goClicked,它是一个onClick方法的“Go”按钮,但是当单击按钮时,该函数没有执行(我可以这样说,因为toast没有显示) 但是如果我对while循环进行注释,然后单击“Go”按钮,则该函数将被执行(toast将出现) 我认为你在处理一个无限循环 如果创建变量timetext时time中包含的文本不是0,则变量timetext将永远不会为0,因此永远不会满足退出循环的条件 public void goClicked(View view) { afterGoPressed(
goClicked
,它是一个onClick
方法的“Go”按钮,但是当单击按钮时,该函数没有执行(我可以这样说,因为toast没有显示)
但是如果我对while循环进行注释,然后单击“Go”按钮,则该函数将被执行(toast将出现)
我认为你在处理一个无限循环 如果创建变量
timetext
时time
中包含的文本不是0,则变量timetext
将永远不会为0,因此永远不会满足退出循环的条件
public void goClicked(View view) {
afterGoPressed();
Toast.makeText(MainActivity.this,"pressed",Toast.LENGTH_SHORT).show();
countDown();
correctCount = 0;
totalCount = 0;
TextView time = (TextView) findViewById(R.id.time);
String timetext = time.getText().toString(); // <--- this will never change
while (!timetext.equals("0")) {
int sum = generateQuestion();
pickOption = generateOptions(sum);
}
}
public void goClicked(查看){
afterGoPressed();
Toast.makeText(MainActivity.this,“pressed”,Toast.LENGTH_SHORT.show();
倒计时();
校正计数=0;
totalCount=0;
TextView时间=(TextView)findViewById(R.id.time);
String timetext=time.getText().toString();//我认为您正在处理一个无限循环
如果创建变量timetext
时time
中包含的文本不是0,则变量timetext
将永远不会为0,因此永远不会满足退出循环的条件
public void goClicked(View view) {
afterGoPressed();
Toast.makeText(MainActivity.this,"pressed",Toast.LENGTH_SHORT).show();
countDown();
correctCount = 0;
totalCount = 0;
TextView time = (TextView) findViewById(R.id.time);
String timetext = time.getText().toString(); // <--- this will never change
while (!timetext.equals("0")) {
int sum = generateQuestion();
pickOption = generateOptions(sum);
}
}
public void goClicked(查看){
afterGoPressed();
Toast.makeText(MainActivity.this,“pressed”,Toast.LENGTH_SHORT.show();
倒计时();
校正计数=0;
totalCount=0;
TextView时间=(TextView)findViewById(R.id.time);
String timetext=time.getText().toString();//通过在代码中加入这样一个紧密的循环,事件调度线程(EDT)就会“饥饿”,因此GUI永远没有机会做任何事情
一个简单的解决方法是在循环中添加一点睡眠,让EDT有一个转折点。但是您确实需要对如何进行GUI编程进行更多的研究
目前,代码看起来像是一个无限循环,因为循环条件中使用的timetext
变量在循环内部没有变化。timetext
可能会随着GUI事件的变化而变化。如果GUI因饥饿而无法运行,则timetext
永远不会变化。通过放置一个ti在代码中这样循环事件调度线程(EDT)是“饥饿”的,因此GUI从来没有机会做任何事情
一个简单的解决方法是在循环中添加一点睡眠,让EDT有一个转折点。但是您确实需要对如何进行GUI编程进行更多的研究
目前,代码看起来像是一个无限循环,因为循环条件中使用的timetext
变量在循环内部没有变化。timetext
可能会随着GUI事件的变化而变化。如果GUI因饥饿而无法运行,那么timetext
永远不会变化。您能解释一下为什么吗这与无限循环不同?你能解释一下这与无限循环有什么不同吗?请添加完整的代码…同时添加afterGoPressed()函数和其他请添加完整的代码…同时添加afterGoPressed()函数和其他