2010-11-09 20 views
47

Tengo una aplicación que usa botones de opción. El valor predeterminado para este botón se establece en el archivo main.xml, es decir:Cómo establecer un botón de opción en Android

android:id="@+id/rb_sat1E" 
android:checked="true" 

En el archivo Java que tienen:

final RadioButton radio1 = (RadioButton)findViewById(R.id.rb_sat1E); 

también han creado un botón de 'Reset' en el principal de Java archivo y puede usar el siguiente código para restablecer la información de TextView, es decir.

pos1_deg.setText("0.0"); 

Pero, ¿cómo restablezco un botón de opción? Hubiera pensado que era algo así como

radio1.setBoolean("TRUE"); 

Pero eso no funciona en absoluto.

Cualquier ayuda muy apreciada. Gracias.

Respuesta

77

Para usar radioButton

radio1.setChecked(true); 

No tiene sentido tener sólo un RadioButton. Si tiene más de ellos, debe desmarcar a los demás a través de

radio2.setChecked(false); ... 

Si su configuración está activada/desactivada, utilice CheckBox.

+0

Eso es un buen punto. Gracias por la respuesta. – Entropy1024

+12

Para otros lectores que puedan encontrarse en mi posición: setChecked (true), es COMPLETAMENTE DIFERENTE de setSelected (true). Ack. – Rich

29

O bien, puede hacerlo en el archivo XML:

En el RadioGroup usando: android:checkedButton="id_button_to_check"

o en el RadioButton: android:checked="true"

+1

Cuando reviso el botón de radio en xml, no puedo desmarcarlo más tarde. Es como si el botón de radio se elimina del grupo – shift66

+0

siento que llego tarde, pero este es el comportamiento previsto para los botones de radio. Cuando lo selecciona, no puede deseleccionarlo EXCEPTO al seleccionar otro botón de radio en el grupo de radio – Aenadon

+0

, podemos borrar la selección llamando a check (-1) o clearCheck(). –

77

Si desea hacerlo en código , puede llamar al miembro de verificación de RadioGroup:

radioGroup.check(R.id.radioButtonId); 

Esto marcará el botón que especifique y desmarcará los demás.

+2

Gracias :) Esta es la mejor respuesta para mí; Exactamente lo que estaba buscando. – kcoppock

+1

Ojalá pudiera votar más esto. –

+1

radioGroup.check (radioGroup.getChildAt (0) .getId()); - para verificar el primer elemento en la lista – somerandomusername

7

Solo para aclarar esto: si tenemos una RadioGroup con varios RadioButtons y la necesidad de activar uno por el índice, implica que:

radioGroup.check(R.id.radioButtonId) 

y

radioGroup.getChildAt(index)` 

podemos hacer:

radioGroup.check(radioGroup.getChildAt(index).getId()); 
3

si ha realizado el diseño en XML y desea mostrar uno de la casilla de verificación en el grupo como se comprobó al cargar la página a continuación soluciones puede ayudar

<RadioGroup 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtLastNameSignUp" 
     android:layout_margin="20dp" 
     android:orientation="horizontal" 
     android:id="@+id/radioGroup"> 
<RadioButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checked="true" 
    android:id="@+id/Male" 
    android:text="Male"/> 
     <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/Female" 
      android:text="Female"/> 
     </RadioGroup> 
-1
btnDisplay.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

      // get selected radio button from radioGroup 
     int selectedId = radioSexGroup.getCheckedRadioButtonId(); 

     // find the radiobutton by returned id 
      radioSexButton = (RadioButton) findViewById(selectedId); 

     Toast.makeText(MyAndroidAppActivity.this, 
      radioSexButton.getText(), Toast.LENGTH_SHORT).show(); 

    } 

}); 
+1

¿Puede explicar por qué OP debería usar su código? – Phiter

0

tengo varias RadioButtons sin Group y setChecked(true) obras, pero no lo hacen setChecked(false) obras.Sin embargo, este código funciona:

RadioButton switcher = (RadioButton) view.findViewById(R.id.active); 
         switcher.setOnClickListener(new RadioButton.OnClickListener(){ 
          @Override 
          public void onClick(View v) { 
           if(((RadioButton)v).isSelected()){ 
            ((RadioButton)v).setChecked(false); 
            ((RadioButton)v).setSelected(false); 
           } else { 
            ((RadioButton)v).setChecked(true); 
            ((RadioButton)v).setSelected(true); 
           } 
          } 

         }); 
1

Muchas veces, si los botones de radio son pertenecen a alguna radioGroup continuación

radioButton.setChecked (verdadero)

no se seleccione el botón de opción adecuada. Entonces, para resolver este problema intente usar su radioGroup.

radioGroup.check (R.id.radioButtonId)

Cuestiones relacionadas