检查是否点击了正确按钮的更好、更短的方法



我正在Android Studio中制作一个小的reactionspeed应用程序,它可以检查用户是否单击了与随机生成的数字匹配的按钮。如果按下了正确的按钮,它将执行NewRound方法。

目前,我有这个:

public void ButtonOneClick(View view) {
if (rnd == 1) {
NewRound(view);
}
}

public void ButtonTwoClick(View view) {
if (rnd == 2) {
NewRound(view);
}
}
public void ButtonThreeClick(View view) {
if (rnd == 3) {
NewRound(view);
}
}
public void ButtonFourClick(View view) {
if (rnd == 4) {
NewRound(view);
}
}
public void ButtonFiveClick(View view) {
if (rnd == 5) {
NewRound(view);
}
}

有没有一种更短、更有效的方法来做到这一点?

是的,有。只需将所有按钮注册到"活动"代码中的同一onClick Listener即可。因此,"活动"必须实现View.onClickListener。然后接口要求您实现onClick方法。以下示例可以解决您的问题:

@Override
public void onClick(View view) {
if(button0 == view && rnd == 2){ // checks which button was pressed
NewRound(view);
}
if(button1 == view && rnd == 3){
NewRound(view);
}
if(button2 == view && rnd == 4){
NewRound(view);
}
}

如果按下活动中的任何按钮,将调用onClick方法。if条件将确保只在正确的情况下调用方法NewRound(视图(。

当然,还有更简单的做事方法。不用使用多个onClick((方法,只需使用一个即可,在任何活动中,您都可以实现onClickListener。

public class MainActivity extends AppCompatActivity implements View.onClickListener{
Button button1, button2, button3,button4;
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
setContentView(R.layout. activity_main);
button1 = findViewById(R.id.button1_ID);
button2 = findViewById(R.id.button2_ID);
button3 = findViewById(R.id.button3_ID);
button4 = findViewById(R.id.button4_ID);
button1.setOnclickListener(this);
button2.setOnclickListener(this);
button3.setOnclickListener(this);
button4.setOnclickListener(this);
}
@Override
public void onClick(View v){
int select_button = 0;
if(v.getId() == R.id.button1_ID){select_button=1; NewRound(view); }
if(v.getId() == R.id.button2_ID){select_button=2 ;NewRound(view); }
if(v.getId() == R.id.button3_ID){select_button=3 ;NewRound(view); }
if(v.getId() == R.id.button4_ID){select_button=4; NewRound(view); }
}}

您也可以在onClick方法中使用switch((方法。

@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button1_ID: NewRound(view); break;
case R.id.button2_ID: NewRound(view); break;
case R.id.button3_ID: NewRound(view); break;
case R.id.button4_ID: NewRound(view); break;
}
}

最新更新