Android 检查按钮是否按下,然后再次检查

Android 检查按钮是否按下,然后再次检查,android,if-statement,button,switch-statement,Android,If Statement,Button,Switch Statement,我对android开发还比较陌生,不知道如何在按下按钮时进行双重检查。 我在安卓工作室工作,试图创建一个简单的小游戏,并拥有以下内容:两个按钮(button1和button2)在onClick方法中声明和实例化。 当按下按钮1时,计数器将递增,并在按钮上显示值为0、10、50、100的数组中的特定值。 这部分很有魅力。我不能做的是创建一个有效的“平分规则”,它应该是这样的: if (button1 value == 100 and button2 value == 100) or this ca

我对android开发还比较陌生,不知道如何在按下按钮时进行双重检查。 我在安卓工作室工作,试图创建一个简单的小游戏,并拥有以下内容:两个按钮(button1和button2)在onClick方法中声明和实例化。 当按下按钮1时,计数器将递增,并在按钮上显示值为0、10、50、100的数组中的特定值。 这部分很有魅力。我不能做的是创建一个有效的“平分规则”,它应该是这样的:

if (button1 value == 100 and button2 value == 100) or this can be done with the counter if (counter1 == 3 && counter2 == 3)
tiebreaker();
if (p1 = 100 || p2 == 100)
   tiebreak = true;
if (p1 == 100 && tiebreaker){
   p1 == OK;
   tiebreaker = false;
} else //same thing for p2
这就是我需要做的:

public void tiebreaker(){
if (button1 is pressed){
   button1.setText(String.valueOf("OK. One more!");
   if (button1 is pressed (again){
       resetCounters();
       goForPlayer1(); //distinct method
   } else if (button2 is pressed) {
       //set both values back to 100
       tiebreaker(); //calls itself in order to repeat until a button is pressed twice consecutivelly
} (else?)
if(button2 is presed){
//same code as above, just with the numbers 1 and 2 swapped
}
}
我尝试过以不同的方式实现这种打破僵局的方法,但没有最终成功。我尝试使用
if(button1.isPressed())
作为条件,按下按钮时布尔值变为true,并将其作为条件,使用按钮中的值以及
button.equals(“100”)或任何应该写入的值,但没有任何结果

此外,我还尝试将tiebreaker作为第二个onClick方法,并基于
开关(View.getId())
进行检查,但这里的问题是该方法依赖于视图(
tiebreaker(View v)
),我不确定如何从其他方法调用它

在我看来,主要的问题是,当涉及到按钮按下时,另一个if中的if或另一个switch/case中的switch/case不能使用(尽管我可能是错的),但我不知道还有其他方法可以做到这一点

我希望我没有错过任何东西,并设法把自己说清楚。 我很感激任何帮助我解决这条平局规则的意见。谢谢

可能是这样的

whenButtonAIsPressed() {

    do some stuff
    possiblyRunTiebreakerMaterial()
}

whenButtonBIsPressed() {

    do some stuff
    possiblyRunTiebreakerMaterial()
}
请注意,您总是运行
possiblyruntebreakermaterial()
,并且总是在完成所有其他处理后运行它

以下是您的
possiblyRunteBreakerMaterial()
函数的性质

possiblyRunTiebreakerMaterial() {

    // there are some conditions, which mean you DO want
    // to run the tie breaker:
    do some processing, such as
    value of A = blah blah
    value of B = blah blah

    // now have a boolean, and figure it out
    boolean  shouldWeRunTheTieBreaker

    processing
    processing
    shouldWeRunTheTieBreaker = blah

    and now finally:
    is shouldWeRunTheTieBreaker == true { tiebreaker() }
}
然后使用
tiebreaker()
函数

你真正想要的是一个状态机,但现在不用担心

您在这里寻找的一般“编程技巧”是您必须执行以下操作:

  • 始终进行处理
  • 然后,只有之后
  • 所有情况下,检查是否需要运行平局断路器
  • 如果需要,运行它

  • 这就是模式。

    不幸的是,我没有投票权。 我设法解决了这个问题。我为tiebreaker创建了一个布尔值,而不是一个函数,它看起来像:

    if (button1 value == 100 and button2 value == 100) or this can be done with the counter if (counter1 == 3 && counter2 == 3)
    tiebreaker();
    
    if (p1 = 100 || p2 == 100)
       tiebreak = true;
    if (p1 == 100 && tiebreaker){
       p1 == OK;
       tiebreaker = false;
    } else //same thing for p2
    

    谢谢你的回答。我遇到的问题不是检查是否应该调用tiebreaker,而是检查方法本身的内部。目前,我还不知道要在平局中写些什么,才能让它完成我上面描述的任务。