所以,我不确定我是否错过了任何东西......(这已经过了一个周末)但是,假设我有这个:
for(int i=0; i<10;){
button1.setOnClickListener(blah blah blah){
public void onClick(View v) {
i++;
}
}
}
它不允许我这样做,它崩溃,有人可以解释为什么?和/或关于如何使这项工作的答案。如果你没有得到它,我想在用户点击按钮时进行FOR增量。我很确定我错过了一些明显的东西,当我发现它时我会生气...谢谢你,祝你有愉快的一天。
答案 0 :(得分:4)
这种方法根本行不通。如果您的目标是每次点击button1
时增加一个数字并运行一组代码,那么您需要执行以下操作:
// somewhere in a persistent scope
int i = 0;
// somewhere in a function
button1.setOnClickListener(/* ... */) {
public void onClick(View v) {
++i;
// run your code
}
}
答案 1 :(得分:2)
它崩溃是因为循环永远不会终止,因为i
永远不会递增。事件处理程序按钮内部有一个i++
语句,从未点击该按钮。
答案 2 :(得分:0)
首先,循环未终止使用的值,因此它将继续运行循环,浪费CPU周期,其次是在每次迭代浪费内存时创建和附加新的EventListener。它可以扩展提供给设备上的应用程序的资源限制。 解, 使用全局变量来增加值,并在回调函数onClick()中检查它是否小于10.