是否有一个Java命令意味着;如果按下任何一个按钮,请按“;?

是否有一个Java命令意味着;如果按下任何一个按钮,请按“;?,java,android,Java,Android,我正在尝试为掷骰子应用程序编写一些代码,如果按下掷骰按钮,它将显示随机的骰子边。 我试图在我的多项选择测验应用程序中重复使用这个概念,如果按下任何按钮,无论是对是错,它都会转到下一个问题: 我想它会像这样,用“按钮”表示所有被按下的按钮。 然而,在这个选择题测验中,只有4个按钮(A、B、C和D)是我想让它发生的,如果按下的话。我相信我可以通过对每个按钮重复代码段4次来实现这一点,但我想知道是否有更简单的方法将所有4个按钮表示在同一行上 (我展示的很多代码都是针对骰子应用程序的,主要是第一行中的第

我正在尝试为掷骰子应用程序编写一些代码,如果按下掷骰按钮,它将显示随机的骰子边。 我试图在我的多项选择测验应用程序中重复使用这个概念,如果按下任何按钮,无论是对是错,它都会转到下一个问题:

我想它会像这样,用“按钮”表示所有被按下的按钮。 然而,在这个选择题测验中,只有4个按钮(A、B、C和D)是我想让它发生的,如果按下的话。我相信我可以通过对每个按钮重复代码段4次来实现这一点,但我想知道是否有更简单的方法将所有4个按钮表示在同一行上

(我展示的很多代码都是针对骰子应用程序的,主要是第一行中的第一个单词,我需要帮助)


我希望在按下其中一个按钮后,它将进入下一个问题。

您可以这样定义侦听器:

View.OnClickListener listener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d("multic", "the Button has been pressed!");
        Random randomNumberGenerator = new Random();
        int number = randomNumberGenerator.nextInt(8);
        Log.d("Dicee", "the random number is: " + number);
        leftDice.setImageResource(diceArray[number]);
        int number1 = randomNumberGenerator.nextInt(8);
        rightDice.setImageResource(diceArray[number1]);                
    }
};
然后将其设置为所需的任意多个按钮:

button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
button4.setOnClickListener(listener);

您可以使用带有switch语句的单个侦听器对象来检查单击了哪个按钮

Button b1,b2;
//findViews
View.OnClickListener listener=new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //code
        switch((Button)v){
            case b1:
                //code
                break;
            case b2:
                //code
                break;

        }
        //code
    }
};
b1.setOnClickListener(listener);
b2.setOnClickListener(listener);

对于一个包含4个可能答案的多项选择题测验,我建议您使用一个包含
RadioButtom
对象的
RadioGroup
,如下所示:

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton android:id="@+id/radio_ninjas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ninjas"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>  
public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}

阅读更多内容:

我认为有多种不同的选择:

(一) 在所有按钮的xml上设置android:onClick=“onNextQuestion”。 然后在java代码中编写:

public void onNextQuestion(View view) {
    // Do something in response to button click
}
2) (最好是在中工作)创建一个
NextQuestionClickListener
类,该类将实现接口
View.OnClickListener
,并将实现方法
onClick
,执行您想要的代码

class NextQuestionClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            // Do something in response to button click
        }
}
然后将侦听器设置为每个按钮:

NextQuestionClickListener nextQuestionClickListener = new NextQuestionClickListener();
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
...
button1.setOnClickListener(nextQuestionClickListener);
button2.setOnClickListener(nextQuestionClickListener);
...
3) 使用RxJava和

4) 我还找到了你可以做的:

@Onclick({R.id.button1,R.id.button2,R.id.button3,R.id.button4})
void onButtonClick(View aView) {
    // Do something in response to button click
}

非常感谢:),我来看看。你认为我把单选按钮放在约束布局中重要吗?不,不应该。能告诉我更多细节吗?
RxView.clicks(button1)
.mergeWith(RxView.clicks(button2))
.mergeWith(RxView.clicks(button3))
.mergeWith(RxView.clicks(button4))
.subscribe(aVoid -> {
    // Do something in response to button click
}, throwable -> Log.e(TAG, "error in handling click of next question", throwable));
@Onclick({R.id.button1,R.id.button2,R.id.button3,R.id.button4})
void onButtonClick(View aView) {
    // Do something in response to button click
}