studio radiogroup radiobutton controles checklist agrupar android radio-button uncheck

android - radiogroup - ¿Cómo desmarcar o borrar el grupo de botones de radio?



radiobutton android checked (5)

Para marcar / desmarcar el botón de radioButton.setChecked(true); puede usar radioButton.setChecked(true); (o falso para desmarcar)

Soy nuevo en Android ...

Estoy frente a un problema al desmarcar el botón de radio en un grupo ....

Mi problema es....

Estoy desarrollando una aplicación basada en cuestionarios. Habrá 1 búsqueda y 4 opciones (botones de opción) cuando el usuario abra esta aplicación, el botón de opción estará desactivado, pero el problema se produce cuando el usuario responde 1 misión y cuando se dirige a la próxima misión, se marcará el botón de opción. Quiero desmarcar / restablecer los botones de radio para cada misión. ¿Cómo puedo hacerlo?

Otro problema que estoy enfrentando es ... Si supongo que el usuario seleccionó el primer botón y nuevamente quiere cambiar la opción para que seleccione otro botón que no debería poder seleccionar.

¿Cómo implementar esto?

Cualquier ayuda sería apreciada.

protected void onPostExecute(String file_url) { pDialog.dismiss(); ques1=new ArrayList<String>(new ArrayList<String>(ques1)); // j=0; TextView txtque = (TextView) findViewById(R.id.que_txt); txtque.setText(ques1.get(j)); 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) findViewById(checkedId); // error // is here 205 line.. String temp = radioButton.getText().toString(); crrtans=new ArrayList<String>(new ArrayList<String>(crrtans)); if (temp.equals(crrtans.get(l))){ TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS CORRECT"); txtRadio.setTextColor(Color.parseColor("#008000")); }else{ //RadioButton radioButton1 = (RadioButton) findViewById(checkedId); // Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show(); TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + "is INCORRECT"); txtRadio.setTextColor(Color.parseColor("#FF0000")); } } }); Button nextBtn = (Button) findViewById(R.id.nxt_btn); nextBtn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ // btn_practicerg.clearCheck(); if (j == ques1.size() -1) { //finish(); showAlert1(); } else{ ++j; TextView txtque = (TextView) findViewById(R.id.que_txt); txtque.setText(ques1.get(j)); ++k; btn_practice1.setText(answ1.get((k*4)+0)); btn_practice2.setText(answ1.get((k*4)+1)); btn_practice3.setText(answ1.get((k*4)+2)); btn_practice4.setText(answ1.get((k*4)+3)); } btn_practicerg.clearCheck(); btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton radioButton = (RadioButton) findViewById(checkedId); String temp = radioButton.getText().toString(); l++; if (temp.equals(crrtans.get(l))){ TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS CORRECT"); txtRadio.setTextColor(Color.parseColor("#008000")); }else{ //RadioButton radioButton1 = (RadioButton) findViewById(checkedId); // Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show(); TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS INCORRECT"); txtRadio.setTextColor(Color.parseColor("#FF0000")); } } }); } }); Button previousbtn = (Button) findViewById(R.id.prv_btn); previousbtn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ if (j <= 0) { Toast.makeText(Question.this, "First Question",Toast.LENGTH_SHORT).show(); } else { --j; TextView txtque = (TextView) findViewById(R.id.que_txt); txtque.setText(ques1.get(j)); --k; btn_practice1.setText(answ1.get((k*4)+0)); btn_practice2.setText(answ1.get((k*4)+1)); btn_practice3.setText(answ1.get((k*4)+2)); btn_practice4.setText(answ1.get((k*4)+3)); } btn_practicerg.clearCheck(); btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton radioButton = (RadioButton) findViewById(checkedId); String temp = radioButton.getText().toString(); l--; if (temp.equals(crrtans.get(l))){ TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS CORRECT"); txtRadio.setTextColor(Color.parseColor("#008000")); }else{ //RadioButton radioButton1 = (RadioButton) findViewById(checkedId); // Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show(); TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS INCORRECT"); txtRadio.setTextColor(Color.parseColor("#FF0000")); } } }); } }); }

Logcat

E/AndroidRuntime(893): FATAL EXCEPTION: main E/AndroidRuntime(893): java.lang.ArrayIndexOutOfBoundsException E/AndroidRuntime(893): at java.util.ArrayList.get(ArrayList.java:313) E/AndroidRuntime(893): at com.example.finalpractice.Question$LoadQuestions$2$1.onCheckedChanged(Question.java:243) E/AndroidRuntime(893): at android.widget.RadioGroup.setCheckedId(RadioGroup.java:172) E/AndroidRuntime(893): at android.widget.RadioGroup.access$600(RadioGroup.java:52) E/AndroidRuntime(893): at android.widget.RadioGroup$CheckedStateTracker.onCheckedChanged(RadioGroup.java:342) E/AndroidRuntime(893): at android.widget.CompoundButton.setChecked(CompoundButton.java:127) E/AndroidRuntime(893): at android.widget.CompoundButton.toggle(CompoundButton.java:86) E/AndroidRuntime(893): at android.widget.RadioButton.toggle(RadioButton.java:72) E/AndroidRuntime(893): at android.widget.CompoundButton.performClick(CompoundButton.java:98) E/AndroidRuntime(893): at android.view.View$PerformClick.run(View.java:9080) E/AndroidRuntime(893): at android.os.Handler.handleCallback(Handler.java:587) E/AndroidRuntime(893): at android.os.Handler.dispatchMessage(Handler.java:92)


Cambia tu código como buscar id para todos los botones de opción en onCreate () y haz que sea global ...

en el onClickListener del botón siguiente, escriba radioButton.setChecked (false); para todos sus botones de radio lo que usó ... y elimine la línea btn_practicerg.clearCheck ();

intenté así trabajando bien ...



En mi caso, tengo un radio grupo llamado rb y 2 rbY ( rbY , rbN ) dentro de él.

Entonces, esta es mi implementación usando onClickListener :

final RadioGroup rb = (RadioGroup) convertView.findViewById(R.id.creditcards); RadioButton rbY = (RadioButton) convertView.findViewById(R.id.radioButton); RadioButton rbN = (RadioButton) convertView.findViewById(R.id.radioButton2); final View finalConvertView = convertView; rbY.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int selected = rb.getCheckedRadioButtonId(); RadioButton rbYes = (RadioButton) finalConvertView.findViewById(selected); RadioButton rbN = (RadioButton) finalConvertView.findViewById(R.id.radioButton2); if (rbYes.isSelected()) { rbYes.setSelected(false); rb.clearCheck(); rb.clearChildFocus(rbYes); } else { rbYes.setSelected(true); } } }); rbN.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int selected = rb.getCheckedRadioButtonId(); RadioButton rbNo = (RadioButton) finalConvertView.findViewById(selected); if (rbNo.isSelected()) { rbNo.setSelected(false); rb.clearCheck(); rb.clearChildFocus(rbNo); } else { rbNo.setSelected(true); } } });


Cree el método clearRadioButtons y llame a onCreate.

public void clearRadioButtons() { radiogroup.clearCheck(); }