0

私はこのコードを持っています:

final OnClickListener clickListener = new OnClickListener() {

            private Button buttonClicked;

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

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;
             } else if (buttonClicked.getParent() != button.getParent()) {
                    // second button is clicked
                    if (buttonClicked.getTag().equals(button.getTag())) {
                        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);
                    } else {
                        Toast.makeText(Spojnice.this, "Wrong", Toast.LENGTH_SHORT).show();

                    }
                 buttonClicked = null;
                }       
            }

     };

1 つのボタンを押してから別のボタンを押すと、両方のボタンが同じ親からのものであるかどうかがチェックされます。しかし、それらが同じ親からのものでない場合、コードはelse ifステートメントを終了してbuttonClicked = null;になります。ここで、問題があります。2 回目のクリックの後に 3 回目のクリックが発生し、最初のクリックを登録解除する必要があるため、2 回目と 3 回目のクリックを比較する必要があります。私の場合、最初のクリックはずっとアクティブなままで、else if ステートメントの条件が肯定的にチェックされるまで待機し、次の if ステートメントに進みます。そして、それは私にとって良くありません。

では、最初のクリックを決して起こらなかったように登録解除し、最新の 2 回のクリックのみを有効にする方法 (この場合は 2 回目と 3 回目) はどうすればよいでしょうか? そして、4番目のボタンを押して2番目の登録を解除すると。

4

2 に答える 2