【发布时间】:2013-05-20 14:47:53
【问题描述】:
public void boss(final Boss boss) {
forward.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
boss.setHp(boss.getHp() - 1);
log("" + boss.getHp());
}
});
if(boss.getHp() > 0){
boss(boss);
}
}
所以,在上面的代码中,我试图让 bossHp 每次点击前进时都减少 1。代码存在 stackoverflow 错误。 (它只是在无限循环中调用 boss()。)我怎样才能让它在每次用户向前点击时将 bossHp 减少 1,然后在 bossHp
注意:其他地方也使用了前进按钮。
谢谢!
编辑:很抱歉之前的那个错字!显示的代码现在是正确的代码。有任何想法吗?谢谢!
澄清:
我想要发生的事情是每次单击按钮前进时都会检查 bossHp 直到 bossHp
【问题讨论】:
-
您看到的是点击处理程序中的无限循环还是boss函数本身?两者都没有直接的无限循环,但它可能有 boss.getHp、boss.setHp 或 bossCombat。不过,我们需要他们检查的代码。
-
这段代码不错。但我相信你在
bossCombat(boss)中调用boss()会导致inf 循环 -
bossCombat()的邮政编码 -
在大多数情况下,
setOnClickListener(listener)应该只调用一次。 -
同意@AudriusK,您需要发布堆栈跟踪以便我们确定。如果您张贴列出堆栈跟踪的前 10 行,这很可能就足够了......我们/您需要在堆栈跟踪中寻找重复模式。
标签: android listener stack-overflow onclicklistener