保持一种方法,直到单击按钮多次

时间:2013-05-20 18:23:27

标签: android stack-overflow infinite-loop onclicklistener

我试图在每次点击myButton时将数字减少10。然后当按钮小于或等于0时,我希望方法完成。如果实际点击按钮,我只希望将数字减少10。

现在,有一个无限循环导致堆栈溢出错误。 (myMethod一直在调用自己。)如果数字小于或等于0,我怎么能留在方法中?例如,如果number = 95,我想留在方法中,直到我点击myButton 10次。为了清楚起见,我知道问题是什么......我正试图找到解决问题的方法。

public void myMethod(final int number) {
    myButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            number -= 10;
        }
    });
    if(number > 0){
        myMethod(number);
    }
}

2 个答案:

答案 0 :(得分:1)

这不是您在事件驱动的操作系统上编程的方式。如果你真的不想要任何其他工作,直到他们点击按钮10次,你需要让你的应用程序中的所有其他功能检查一个标志,看看它是否允许。然后当number == 0时,onClick函数将该标志设置为true。你永远不会因为任何原因而占用主线程 - 这样做会导致你的应用完全没有响应,并且Android会在几秒钟后因应用程序崩溃而终止该应用程序

答案 1 :(得分:0)

在你的onCreate中使用它:

myButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        if(number > 0)
           number -= 10;
        else
           whateveryouwant();
    }
});

您只需要设置一次听众。

在您的情况下,您将为侦听器设置无限的时间,因为数字始终大于0。