计数器计数不正确

时间:2013-04-13 22:55:41

标签: java android

我有8对按钮(共16个),其中一些来自sqlite数据库。我需要当用户连接8对(正确或错误,没关系)结束游戏时,最后会弹出一些弹出窗口。当我在我的代码中放置计数器< 7时,我需要再连接8对,再点击一些按钮(17次点击)。如果我输入计数器< 6,那么我在7对之后得到我的弹出窗口,然后再点击一次(15次点击)。我不明白这个逻辑。所以这是代码:

final OnClickListener clickListener = new OnClickListener() {

        private Button buttonClicked;

        public void onClick(View v) {
            if (counter < 7) {
                Button button = (Button) v;
                button.getBackground()
                      .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333));

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;

                    // only do stuff if buttons are in different layouts
                } else {
                    if (!button.getParent().equals(buttonClicked.getParent())) {
                        // second button is clicked

                        if (buttonClicked.getTag().equals(button.getTag())) {

                            // second button is clicked and same tag but different button

                            Toast.makeText(Spojnice.this, "Correct", Toast.LENGTH_SHORT).show();
                            button.getBackground()
                                  .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                            buttonClicked.getBackground().setColorFilter(
                                new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                            buttonClicked.setEnabled(false);
                            button.setEnabled(false);
                            buttonClicked = null;
                            score.setText("Poeni: " + brojPoenaSpojnice);
                            counter++;
                        } else {
                            counter++;
                            //reset LightingColorFilter first
                            button.setEnabled(false);
                            Toast.makeText(Spojnice.this, "Wrong", Toast.LENGTH_SHORT).show();
                            buttonClicked = null;

                        }

                    } else {
                        //same button clicked show message or un toggle?

                        buttonClicked = button;
                    }
                }
            } else {
                Intent i = new Intent(Spojnice.this, Popup_spojnice.class);
                startActivity(i);
                mHandler.postDelayed(mLaunchTask, 6500);
            }
        }

    };

1 个答案:

答案 0 :(得分:1)

由于您首先检查计数器,然后将其递增,在连接7对后,您的计数器将为6(仍然<7)。下次你递增计数器时它将是7,你的第一个条件将是假的,但只会在下一轮再次检查。

要解决此问题,您应该在递增计数器之后检查条件(if (counter < 7),而不是之前。