Java 基于上次单击的内容按钮创建IF语句的最佳方法

Java 基于上次单击的内容按钮创建IF语句的最佳方法,java,android,if-statement,android-button,buttonclick,Java,Android,If Statement,Android Button,Buttonclick,我有一个按钮,它有几个IF语句,根据选中哪个切换按钮来更改其功能。这一切都很好。 现在,我想创建一个语句,该语句将根据是否单击某个按钮来更改功能。任何想法都很好 这是我到目前为止的按钮代码 //黄色按钮 player1Counter= 0; player2Counter= 0; breakCounter= 0; yellowAdd2 = (Button) findViewById(R.id.yellowButton); player1 = (ToggleB

我有一个按钮,它有几个IF语句,根据选中哪个切换按钮来更改其功能。这一切都很好。 现在,我想创建一个语句,该语句将根据是否单击某个按钮来更改功能。任何想法都很好

这是我到目前为止的按钮代码

//黄色按钮

    player1Counter= 0;
    player2Counter= 0;
    breakCounter= 0;
    yellowAdd2 = (Button) findViewById(R.id.yellowButton);
    player1 = (ToggleButton) findViewById(R.id.player1Button);
    player2 = (ToggleButton) findViewById(R.id.player2Button);
    player1ScoreDisplay= (TextView) findViewById(R.id.player1Score);
    player2ScoreDisplay= (TextView) findViewById(R.id.player2Score);
    breakDisplay= (TextView) findViewById(R.id.breakCounterNum);

    yellowAdd2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
    if (toggle1.isChecked()) {
        if (player1.isChecked()) {
            player1Counter += 2;
            breakCounter += 2;
            player1ScoreDisplay.setText("" + player1Counter);
            breakDisplay.setText("" +breakCounter);
        }
        if (player2.isChecked()) {
            player2Counter += 2;
            breakCounter += 2;
            player2ScoreDisplay.setText("" + player2Counter);
            breakDisplay.setText("" +breakCounter);
        }
    }
    if (toggle2.isChecked()) {
        if (player1.isChecked()) {
            breakCounter = 0;
            breakDisplay.setText("" +breakCounter);
            player1.setChecked(false);
            player2.setChecked(true);
            toggle2.setChecked(false);
            toggle1.setChecked(true);
        }
        else if (player2.isChecked()) {
            breakCounter = 0;
            breakDisplay.setText("" +breakCounter);
            player2.setChecked(false);
            player1.setChecked(true);
            toggle2.setChecked(false);
            toggle1.setChecked(true);
        }
    }
    if (toggle3.isChecked()) {
        if (player1.isChecked()) {
            breakCounter = 0;
            breakDisplay.setText("" +breakCounter);
            player1.setChecked(false);
            player2.setChecked(true);
        }
        else if (player2.isChecked()) {
            breakCounter = 0;
            breakDisplay.setText("" +breakCounter);
            player2.setChecked(false);
            player1.setChecked(true);
        }
    }
    if (toggle4.isChecked()) {
        if (player1.isChecked()) {
            player2Counter += 4;
            player2ScoreDisplay.setText("" + player2Counter);
            breakCounter = 0;
            breakDisplay.setText("" +breakCounter);
            player2.setChecked(true);
            player1.setChecked(false);
            toggle4.setChecked(false);
            toggle1.setChecked(true);
        }
        else if (player2.isChecked()) {
                 player1Counter += 4;
                 player1ScoreDisplay.setText("" + player1Counter);
                 breakCounter = 0;
                 breakDisplay.setText("" +breakCounter);
                 player1.setChecked(true);
                 player2.setChecked(false);
                 toggle4.setChecked(false);
                 toggle1.setChecked(true);
        }
    }
}
}); 

按下按钮时,可以设置标志:

boolean preButtonWasPressed = false;
// snip

// snap
preButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        preButtonWasPressed = true;
    }
});
changeBehaviorButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        yellowAdd2.setOnClickListener(aDifferentOnClickListener);
    }
});
稍后检查此标志:

if ( preButtonWasPressed ) {
    // do some stuff
    // clear the flag
    preButtonWasPressed = false;
}
或者,如果按下按钮,您可以更改单击Listener的
onClickListener

boolean preButtonWasPressed = false;
// snip

// snap
preButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        preButtonWasPressed = true;
    }
});
changeBehaviorButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        yellowAdd2.setOnClickListener(aDifferentOnClickListener);
    }
});

不相关,但看起来这里确实有一些简单的重构要做。你会怎么做呢。我在学习,我知道这并不像它能做到的那么干净和高效。谢谢你提供的信息。我尝试一下这些方法,然后再给你回复结果。