条件永不返回真

时间:2018-10-24 21:32:05

标签: android if-statement timertask

我有一个if语句,它检查三个插槽是否完成。如果是这样,计时器应该停止,但是由于某些原因该代码未运行。我见过与此If-condition never executes despite correct condition类似的帖子,但是他们的解决方案没有解决任何问题。

这是我的代码:

停止功能

 public void stop(ImageSwitcher slot){
    slotOneFinished = (slot.equals(slotOne));
    slotTwoFinished = (slot.equals(slotTwo));
    slotThreeFinished = (slot.equals(slotThree));
    if (slotOneFinished&&slotTwoFinished&&slotThreeFinished){
        //not running
        Toast.makeText(MainActivity.this, "Running",Toast.LENGTH_SHORT).show();
        checkWin(getFruits());
        timer.cancel();
        timer = null;
    }
}

计时器

private Timer timer;
TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        runOnUiThread(new TimerTask() {
            @Override
            public void run() {
                if (!slotOneFinished){
                    animate(randomSwitchCount(), slotOne);
                }
                if (!slotTwoFinished) {
                    animate(randomSwitchCount(), slotTwo);
                }
                if (!slotThreeFinished) {
                    animate(randomSwitchCount(), slotThree);
                }
            }
        });
    }
};

动画功能

public void animate(final int maxCount, final ImageSwitcher slot) {
    i++;
    if (i<maxCount){
        Animation in = AnimationUtils.loadAnimation(this, R.anim.new_slot_item_in);
        Animation out = AnimationUtils.loadAnimation(this, R.anim.old_item_out);
        slot.setInAnimation(in);
        slot.setOutAnimation(out);
        int fruit = randomFruit();
        slot.setTag(fruit);
        slot.setImageResource(fruit);
    }else {
        stop(slot);
    }
}

使用==也不起作用。

感谢您的帮助,

PiNet

1 个答案:

答案 0 :(得分:0)

假设equals()以规范的方式实现,并且slotOneslotTwoslotThree是3个不同的对象,则此条件永远不会成立:

if (slotOneFinished&&slotTwoFinished&&slotThreeFinished)

好像您对变量的范围有一个错误的假设。您可能可以通过使用如下条件来解决此问题:

if( slot == slotOne )
    slotOneFinished = true;

...等等。

Android Studio调试器是您的朋友。