使用onclicklisteners使用按钮停止循环

时间:2018-01-23 21:34:07

标签: android

我创建了一个线程,其中包含一个while和一个for循环。 while循环正在观察stop变量(默认为false),当按下循环停止按钮时,该变量将变为true。 for循环应该填充squad_0 Byte [](长度为4),如果i大于squad_0,则将i设置为0,这样用户可以再次填充它,直到它按下停止按钮

new Thread(new Runnable() {
        public void run() {
            while (stop) {
                //the program stops there
                for(int i = 0; i > squad_0.length; i++){
                    squad_0[i] = set_sqm0();
                    if(i++>squad_0.length)
                        i = 0;
                }
            }
        }
    }).start();
    //without the while it run everything above

我用这段代码填充数组:

public Byte set_sqm0() {
    selected = 0;

    a.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selected = 0;
        }
    });
    //It's the same for b-f


    return selected;
}

应检查用户按下的内容。在程序中,我将它从a定义为f,并将a设置为0,将b设置为1,f设置为5,依此类推。结束按钮具有以下代码:

public void endt(View view){
    stop = true;
}

程序在while(停止)之前停止。如果我删除了while循环,程序会一直运行到最后,而不必等待按任何按钮或任何按钮。  任何人都可以帮我解决这段代码的问题吗?我只是不知道为什么它不起作用。

1 个答案:

答案 0 :(得分:1)

如果我做对了,你的问题就在for循环中了:

for(int i = 0; i > squad_0.length; i++)
{
    squad_0[i] = set_sqm0();
    if(i++>squad_0.length)
        i = 0;
}

循环不会运行,因为i总是小于squad_0.length(i = 0,squad_0.length = 4),所以你应该改变来自>的符号。至< 甚至在那之后,循环是一个无限循环,因为i永远不会变得更大或等于squad_0.length
你应该删除循环中的if语句,这样每次for循环结束时都会检查while循环语句,只有这样,它才会再次启动for循环。

此外,您的while声明应该是while(!stop)而不是while(stop),以便在您将stop=false设置为默认设置后第一次运行,并设置stop=true 1}}当你想退出循环时。