Java 基于上次单击的内容按钮创建IF语句的最佳方法
我有一个按钮,它有几个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
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);
}
});
不相关,但看起来这里确实有一些简单的重构要做。你会怎么做呢。我在学习,我知道这并不像它能做到的那么干净和高效。谢谢你提供的信息。我尝试一下这些方法,然后再给你回复结果。