我试图在每次点击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);
}
}
答案 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。