android - programacion - ¿Cómo puedo desmarcar o restablecer el botón de radio?
manual de android en pdf (6)
Soy nuevo en el dominio de Android ..
Estoy desarrollando una aplicación basada en un cuestionario. Habrá 1 pregunta y 4 opciones (botones de opción) cuando el usuario abra esta aplicación. El botón de opción se desactivará, pero el problema surge cuando el usuario responde a 1 búsqueda y, cuando se active la próxima búsqueda, se seleccionará el botón de opción. Deseo desactivar / restablecer los botones de radio para cada pregunta. ¿Cómo puedo hacerlo?
Gracias de antemano...
answ1=new ArrayList<String>(new ArrayList<String>(answ1));
btn_practice1.setText(answ1.get(0));
btn_practice2.setText(answ1.get(1));
btn_practice3.setText(answ1.get(2));
btn_practice4.setText(answ1.get(3));
btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = (RadioButton)group. findViewById(checkedId); //line 262
String temp = radioButton.getText().toString();
switch(btn_practicerg.getCheckedRadioButtonId()){
case R.id.RB1:
if (btn_practice1.isChecked()){
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB2:
if (btn_practice2.isChecked()){
btn_practice1.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB3:
if (btn_practice3.isChecked()){
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB4:
if (btn_practice4.isChecked()){
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
}
break;
default:
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
ImageView nextBtn = (ImageView) findViewById(R.id.nxt_btn);
nextBtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
btn_practicerg.clearCheck(); //line 355
}
});
Logcat
E/AndroidRuntime(729):at
com.example.TEENEINSTIEN.Question$LoadQuestions$2.onCheckedChanged(Question.java:262)
E/AndroidRuntime(729):at android.widget.RadioGroup.setCheckedId(RadioGroup.java:172)
E/AndroidRuntime(729):at android.widget.RadioGroup.check(RadioGroup.java:166)
E/AndroidRuntime(729):at android.widget.RadioGroup.clearCheck(RadioGroup.java:205)
E/AndroidRuntime(729):at
com.example.TEENEINSTIEN.Question$LoadQuestions$3.onClick(Question.java:355)
E/AndroidRuntime(729):at android.view.View.performClick(View.java:2485)
E/AndroidRuntime(729):at android.view.View$PerformClick.run(View.java:9080)
Intento así, pero no puedo desmarcar ...
Coloque todos sus botones en un RadioGroup
luego, cuando necesite eliminarlos, use RadioGroup.clearCheck();
Creo que el problema es con el objeto btn_practicerg, es decir, si está creando un nuevo objeto RadioGroup cada vez que muestra una nueva pregunta, debe ejecutar RadioGroup.clearCheck () en el nuevo objeto btn_practicerg en lugar de la antigua que creo que está haciendo actualmente.
Aun mejor:
btn_practice1.setText(answ1.get(0));
btn_practice2.setText(answ1.get(1));
btn_practice3.setText(answ1.get(2));
btn_practice4.setText(answ1.get(3));
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
para desmarcar todos los botones al principio. Espero que esto resuelva tu problema.
Ponga todo en un grupo, luego use:
buttonGroup1.clearSelection();
Prueba este, el mismo problema se resolvió con esta solución:
- establezca el método onclick en los 4
radio1Clicked
digaradio1Clicked
,radio2Clicked
y así en el método onclick respectivo agregue el siguiente código:
public void radio1Clicked(View view) { // Note that I have unchecked radiobuttons except the one // which is clicked/checked by user radio2Button.setChecked(false); radio3Button.setChecked(false); radio4Button.setChecked(false); }
Al igual que hacer para los botones de radio restantes. Espero que esto resuelva su problema.
Por favor, siéntase libre de hacer cualquier pregunta con respecto a la solución.
Si el botón Radio pertenece a un grupo de radiología, NUNCA se puede desmarcar solo ese botón programáticamente, por lo que debe hacer un método para deshacer todo primero.
public void unchecked()
{
RadioGroup x=findViewById(R.id.NameOfRadiogroup);
x.clearCheck();
}
y luego hay que llamar al método.
Tenía un solo botón de radio y realmente no quería hacer un grupo de botones de radio. Básicamente, agregué un botón de opción, luego dejé el texto vacío, agregué el checkTextView contiguo (superpuesto) y luego vinculé la función onClick del checkTextView a una función de alternar ->
public void toggle(View view)
{
if(checkedTextView.isChecked())
{
checkedTextView.setChecked(false);
actualRadioBtn.setChecked(false);
}
else
{
checkedTextView.setChecked(true);
actualRadioBtn.setChecked(true);
}
}
Luego, en la función en la que verifica si ese botón de opción está seleccionado, simplemente puede usar
if(actualRadioBtn.isChecked())....