我如何在android中等待按钮点击?

我如何在android中等待按钮点击?,android,button,wait,Android,Button,Wait,我即将完成西蒙·赛义德的游戏,但我还有一个关键问题 在我的按钮显示给播放器后,我必须等待(根据级别,例如,如果向用户显示了5个按钮,我必须等待用户单击5个按钮)。我在互联网上搜索过,但唯一的答案是“你不能冻结android应用程序……诸如此类” 这是我的代码: public boolean playerTurn(){ //Enable buttons buttonUp.setClickable(true); buttonDown.setClickable(true);

我即将完成西蒙·赛义德的游戏,但我还有一个关键问题

在我的按钮显示给播放器后,我必须等待(根据级别,例如,如果向用户显示了5个按钮,我必须等待用户单击5个按钮)。我在互联网上搜索过,但唯一的答案是“你不能冻结android应用程序……诸如此类”

这是我的代码:

public boolean playerTurn(){
    //Enable buttons
    buttonUp.setClickable(true);
    buttonDown.setClickable(true);
    buttonRight.setClickable(true);
    buttonLeft.setClickable(true);

    /*
     Wait for a button clicks depends on the level, but HOW?
     e.g, if the level is 5, I have to wait for 5 button clicks
     and after it, I can continue to run the code
     */


    /*Check if the user typed the correct order
     *If pressed the correct order
     *return true;
     *else
     *return false
    */
}

我不在计算机附近,所以没有代码示例(稍后将发布)。基本上,您可以设置类级别计数器。为每个按钮提供OnClickListener-可以相同也可以不同。在侦听器中,递增计数器并检查其是否达到5。如果有,请检查图案并清除计数器。

对于每个按钮,执行以下操作:

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click   
                buttonsPressedCount++;

                if (buttonsPressedCount >= 5) {
                  // Do whatever you wanted to do
                }
            }
        });
通过这种方式,每个按钮都将侦听单击并更新全局计数器。最后,当全局计数器大于5时,可以继续。应用程序从未“暂停”,它只是在单击五个按钮后才移动到下一部分。

您可以使用此功能。将点击转换为事件流,并向其中添加订阅者,订阅者将对点击事件作出反应

你可以这样做

RxView.clicks(button)
.take(5)
.subscribe(aVoid ->
{
    // Do your stuff
});
这将向click事件添加订阅者,并且只接受前五个事件


希望能有所帮助。

了解有关计时器的更多信息,并在代码中进行设置;每个按钮5次或总共5次?总共5次。。。如果显示了5个按钮,用户必须单击5次基本上,您必须从“做这个,然后这个,然后这个”的范例切换到事件驱动的状态机类型的方法,在这种方法中,每个用户输入甚至方法都会使您更接近于实现某个目标。按下的按钮数是一种简单的情况,更复杂的情况可能是要求用户按特定顺序按下某些按钮-每个正确的按钮都会使状态朝着目标前进,而不正确的按钮会将状态重置为开始。您的程序将花费大部分时间坐在系统代码中等待按钮按下,在用户按下按钮时系统调用的事件方法中运行代码的时间非常短。。。听起来不错,你能晚一点发吗?提前谢谢你!行。大约需要4个小时左右。请参阅上面我的答案了解此方法。谢谢hatboysam!坐下来写代码示例,看看你的答案