0

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

现在,有一个导致堆栈溢出错误的无限循环。(myMethod 一直在调用自己。)我怎样才能留在方法中直到 number 小于或等于 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);
    }
}
4

2 回答 2

1

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

于 2013-05-20T18:27:37.840 回答
0

在你的 onCreate 中使用它:

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

你只需要设置你的监听器一次。

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

于 2013-05-20T18:30:45.180 回答