如果选中两个 RadioGroup,如何启用按钮?
How to enable a button if two RadioGroups are checked?
我真的很想知道如何启用一个按钮并转到下一个 activity 但我的问题是我有 2 个 radioGroup 并且我不知道我必须在哪里设置 Intent 和设置启用()。我想我应该使用条件句,但我不确定。
代码
到目前为止我有这个代码
radioGroup = findViewById(R.id.RadioGroup);
radioGroupGM = findViewById(R.id.radioGroupGM);
//Button
siguiente = findViewById(R.id.buttonSiguiente);
//RadioButton
b1 = findViewById(R.id.radioButton);
b2 = findViewById(R.id.radioButton2);
b3 = findViewById(R.id.radioButton3);
b4 = findViewById(R.id.radioButton4);
b5 = findViewById(R.id.radioButto11);
b6 = findViewById(R.id.radioButto22);
b7 = findViewById(R.id.radioButto33);
b8 = findViewById(R.id.radioButto44);
cliente = new AsyncHttpClient();
getSupportActionBar().setTitle("REPORTE");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//---------------------------------------------------------------------------------------
siguiente.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if( !b1.isChecked() || !b2.isChecked() || !b3.isChecked() || !b5.isChecked() ||
!b6.isChecked() || !b7.isChecked() || !b8.isChecked() ){
Toast.makeText(Inventory.this, "choose a button", Toast.LENGTH_SHORT).show();
}
}
});
//---------------------------------------------------------------------------------------
//---- -- --- --- -- THE PROBLEM --- - - - - ---- -- - -- -------
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if( b1.isChecked() || b2.isChecked() || b3.isChecked() || b4.isChecked() ){
siguiente.setEnabled(true); // THIS
Intent siguiente = new Intent(Inventory.this, Siguiente.class); // IS
startActivity(siguiente); // THE PROBLEM
}
}
});
radioGroupGM.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if( b5.isChecked() || b6.isChecked() || b7.isChecked() || b8.isChecked() ){
siguiente.setEnabled(true); //THIS
Intent siguiente = new Intent(Inventory.this, Siguiente.class);// IS
startActivity(siguiente); // THE PROBLEM
}
}
});
使用&&而不是||
如果您使用 && 它将检查所有条件并仅在所有条件为真时才执行操作。但在 || 的情况下当其中任何一个为真时,它将 运行。
您可以查看是否有单选组选中了单选按钮。
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (radioGroup.getCheckedRadioButtonId() != -1 && radioGroupGM.getCheckedRadioButtonId() != -1) {
siguiente.setEnabled(true);
}
//do other activities
}
});
在你的下一个无线电组中也这样做
radioGroupGM.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (radioGroup.getCheckedRadioButtonId() != -1 && radioGroupGM.getCheckedRadioButtonId() != -1) {
siguiente.setEnabled(true);
}
//do other activities
}
});
现在您可以为按钮设置 onclick 侦听器
siguiente.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//go to next intent
Intent siguiente = new Intent(Inventory.this, Siguiente.class);// IS
startActivity(siguiente);
}
});
我认为这应该可以解决您的问题。编码愉快!!
我真的很想知道如何启用一个按钮并转到下一个 activity 但我的问题是我有 2 个 radioGroup 并且我不知道我必须在哪里设置 Intent 和设置启用()。我想我应该使用条件句,但我不确定。
代码
到目前为止我有这个代码
radioGroup = findViewById(R.id.RadioGroup);
radioGroupGM = findViewById(R.id.radioGroupGM);
//Button
siguiente = findViewById(R.id.buttonSiguiente);
//RadioButton
b1 = findViewById(R.id.radioButton);
b2 = findViewById(R.id.radioButton2);
b3 = findViewById(R.id.radioButton3);
b4 = findViewById(R.id.radioButton4);
b5 = findViewById(R.id.radioButto11);
b6 = findViewById(R.id.radioButto22);
b7 = findViewById(R.id.radioButto33);
b8 = findViewById(R.id.radioButto44);
cliente = new AsyncHttpClient();
getSupportActionBar().setTitle("REPORTE");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//---------------------------------------------------------------------------------------
siguiente.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if( !b1.isChecked() || !b2.isChecked() || !b3.isChecked() || !b5.isChecked() ||
!b6.isChecked() || !b7.isChecked() || !b8.isChecked() ){
Toast.makeText(Inventory.this, "choose a button", Toast.LENGTH_SHORT).show();
}
}
});
//---------------------------------------------------------------------------------------
//---- -- --- --- -- THE PROBLEM --- - - - - ---- -- - -- -------
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if( b1.isChecked() || b2.isChecked() || b3.isChecked() || b4.isChecked() ){
siguiente.setEnabled(true); // THIS
Intent siguiente = new Intent(Inventory.this, Siguiente.class); // IS
startActivity(siguiente); // THE PROBLEM
}
}
});
radioGroupGM.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if( b5.isChecked() || b6.isChecked() || b7.isChecked() || b8.isChecked() ){
siguiente.setEnabled(true); //THIS
Intent siguiente = new Intent(Inventory.this, Siguiente.class);// IS
startActivity(siguiente); // THE PROBLEM
}
}
});
使用&&而不是||
如果您使用 && 它将检查所有条件并仅在所有条件为真时才执行操作。但在 || 的情况下当其中任何一个为真时,它将 运行。
您可以查看是否有单选组选中了单选按钮。
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (radioGroup.getCheckedRadioButtonId() != -1 && radioGroupGM.getCheckedRadioButtonId() != -1) {
siguiente.setEnabled(true);
}
//do other activities
}
});
在你的下一个无线电组中也这样做
radioGroupGM.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (radioGroup.getCheckedRadioButtonId() != -1 && radioGroupGM.getCheckedRadioButtonId() != -1) {
siguiente.setEnabled(true);
}
//do other activities
}
});
现在您可以为按钮设置 onclick 侦听器
siguiente.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//go to next intent
Intent siguiente = new Intent(Inventory.this, Siguiente.class);// IS
startActivity(siguiente);
}
});
我认为这应该可以解决您的问题。编码愉快!!