如何在Android中基于onClick替换计时器?

时间:2017-03-06 10:50:33

标签: java android firebase firebase-realtime-database

我正在尝试使用Firebase在Android Studio中制作TicTacToe在线多人游戏,下面是我用于按钮的代码(TicTacToe的9个块中的1个)。现在我使用计时器阻止用户点击按钮后点击任何其他按钮,让其他用户有时间点击。但我想这样做,以便一个用户在其他用户点击按钮之前无法点击任何按钮。有办法吗? 默认值为nothing&面子& a1为“零”,默认值为“1”,而rface只是一个字符串变量,其值来自“face”。

//below clicking
        a1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //below
                //starting if condition
                if (ra1.equals(nothing)){

                    if (rface.equals(nothing)){
                        a1.setBackgroundResource(R.drawable.rounded);
                        Firebase refChild = ref2.child("a1");
                        refChild.setValue("round");
                        refChild = ref2.child("face");
                        refChild.setValue("one");
                    }

                    else if (rface.equals(added)) {
                        a1.setBackgroundResource(R.drawable.crossed);
                        Firebase refChild = ref2.child("a1");
                        refChild.setValue("cross");
                        refChild = ref2.child("face");
                        refChild.setValue("zero");
                    }
                    //timer below

                    a1.setClickable(false);
                    a2.setClickable(false);
                    a3.setClickable(false);
                    b1.setClickable(false);
                    b2.setClickable(false);
                    b3.setClickable(false);
                    c1.setClickable(false);
                    c2.setClickable(false);
                    c3.setClickable(false);
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            a1.setClickable(true);
                            a2.setClickable(true);
                            a3.setClickable(true);
                            b1.setClickable(true);
                            b2.setClickable(true);
                            b3.setClickable(true);
                            c1.setClickable(true);
                            c2.setClickable(true);
                            c3.setClickable(true);
                        }
                    }, 3000);
                    //timer above
                }
            }
        });

2 个答案:

答案 0 :(得分:2)

我建议使用两个不同的OnClickListener而不是if语句。一个用于Xs,另一个用于Os。然后你可以来回设置监听器。例如,在OnClickListener for X的末尾,它使用Os来调用setOnClickListener()

答案 1 :(得分:1)

我终于为我的解决方案提出了这个算法:

online=0;
offline=1;


if (online!=offline){
    offline=random;
    online=offline;
    if(shape=0)
    {
        click(set round);
    }
    else if(shape=1)
    {
        click(set cross);
    }
}

其中整形器是另一个我用作开关的整数。