Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在我对函数中的while循环进行注释之前,onClick不起作用_Java_Android - Fatal编程技术网

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()函数和其他