我怎么能等待android中的按钮点击?

时间:2014-04-30 21:34:20

标签: android button wait

我即将完成我的Simon说话游戏,但我仍有一个关键问题。

我的按钮显示给播放器后,我必须等待(根据级别,例如,如果向用户显示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
    */
}

3 个答案:

答案 0 :(得分:3)

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

        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时,您可以继续。该应用程序永远不会“暂停”,它只会在单击五个按钮时在下一部分移动。

答案 1 :(得分:1)

我不在电脑附近,所以没有代码示例(稍后会发布)。基本上,您可以设置一个班级计数器。为每个按钮提供OnClickListener - 可以相同也可以不同。在监听器中递增计数器并检查它是否达到5。如果是,请检查模式并清除计数器。

答案 2 :(得分:0)

您可以使用RxBindings来实现此目的。将点击转换为事件流,并向其添加订阅者,这将对点击事件作出反应。

这是你如何做到的,

RxView.clicks(button)
.take(5)
.subscribe(aVoid ->
{
    // Do your stuff
});

这会为点击事件添加订阅者,并且只会占用前五个事件。

希望它有所帮助。