按钮单击n次时执行的操作

时间:2013-05-20 14:47:53

标签: android listener stack-overflow onclicklistener

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< = 0时停止?

注意:按钮前进也在其他地方使用。

谢谢!

编辑:对此错误提前抱歉!显示的代码现在是正确的代码。有任何想法吗?谢谢!

澄清:

我想要发生的是,每次点击按钮前进时检查bossHp UNTIL bossHp< = 0.此时我想退出该方法,但不是在此之前

1 个答案:

答案 0 :(得分:0)

这应该有效。此外,您不必将boss作为函数参数传递。您可以将该对象保留为班级中的字段。

public void boss(final Boss boss) {
    forward.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(boss.getHp() > 0){
                boss.setHp(boss.getHp() - 1);
                log("" + boss.getHp());
            } else {
                //boss is dead
            }
        }
    });
}