2010-07-26 14 views
5

Ich füge einen RadioButton in meinem Layout hinzu.Radio Button schaltet seinen Status nicht um

Es ist nicht aktiviert, um mit zu beginnen. Und wenn ich darauf klicke, wird es überprüft (wie im Emulator gezeigt). Aber wenn ich es erneut anklicke, wird es nicht wieder deaktiviert?

+3

Aber so funktioniert ein Radiobutton * soll funktionieren. –

Antwort

3

Wenn Sie nur eine Radio-Box zum Ein- und Ausschalten verwenden, sollten Sie stattdessen das Kontrollkästchen oder die Umschalttaste verwenden.

http://developer.android.com/resources/tutorials/views/hello-formstuff.html

Scroll down und Kontrollkästchen sehen und Taste verwenden.

Wenn Sie Radios verwenden, haben Sie normalerweise mehr als eins und wählen zwischen ihnen. Wie leicht, mittel, schwer.

+0

Wie kann ich "androide's checkboxStyle" in meiner eigenen Kontrolle angeben? – michael

1

Das ist eine konzeptionelle Frage: Optionsfelder ermöglichen die Auswahl zwischen mehreren Optionen (dargestellt durch die anderen Optionsfelder). In der Regel wird immer ein Optionsfeld aus einer Gruppe überprüft, auch wenn im Ausgangszustand keine Schaltflächen aktiviert sind, wenn Sie keines als Standardwert deklarieren. Das bedeutet auch, dass ein einzelner Knopf seinen Zustand nicht umschalten lässt, außer wenn andere Radio-Knöpfe in derselben Gruppe vorhanden sind - wenn es nur eine Option gibt, müssen Sie sie auswählen.

Wenn Sie eine binäre Umschaltung wünschen, sollten Sie stattdessen ein Kontrollkästchen verwenden.

3

Wenn Sie mehr als 1 Radiobuttons, die mit dann zu arbeiten, fügen Sie „RadioGroups“ wie folgt:

<RadioGroup android:id="@+id/group1" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:orientation="vertical"> 
     <RadioButton android:id="@+id/radio1" android:text="madras" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
     <RadioButton android:id="@+id/radio2" android:text="bombay" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
    </RadioGroup> 

Werfen Sie einen Blick auf diese example, ich bin sicher, dass dies Ihre Idee klar in Bezug auf -Radio machen Knöpfe.

Siehe auch Android Developer - Form Stuff page.

1

Lösung gesetzt wird geprüft [true/false]

ToggleButton t = (ToggleButton) findViewById(R.id.toggle_button); 
t.setChecked(true); 
// t.setChecked(false); 
3

in Java-Code Zwischen Wenn Sie Checkbox Verhalten mit Radio-Button Aussehen suchen, Sie in dem XML-Stil zu einem Kontrollkästchen passieren könnten.

<CheckBox android:checked="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/option1" 
     style="@android:style/Widget.DeviceDefault.Light.CompoundButton.RadioButton/> 

Dies kann in einigen Fällen sinnvoll sein (ex. Radio-Buttons in einem RecyclerView verwenden), aber Sie sollten vorsichtig sein, da der Benutzer Radiobuttons erwartet eine bestimmte Art und Weise zu verhalten. Wenn Sie dem Benutzer mehrere Auswahlen erlauben, sollten Sie wahrscheinlich ein normales Kontrollkästchen verwenden, wie in den obigen Kommentaren erwähnt.

Hoffe, das hilft!

1

Nachdem ich viel auf SO gesucht habe, kam ich auf eine nicht so gute, aber ordentliche Workaround.

Deklarieren Sie eine boolean Variable für jeden RadioButton, den Sie haben, initialisieren Sie sie mit false, und ändern Sie den Status der Variablen und des RadioButton bei jedem Klick.

boolean isToggledRadio1 = false; 
RadioButton radio1 = (RadioButton) findViewById(R.id.radiobutton1); 
radio1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     isToggledRadio1 = !isToggledRadio1; //Switch boolean value 
     RadioButton rb = (RadioButton)v; 
     rb.setChecked(isToggledRadio1); 
    } 
}); 

  1. Ich weiß, dass es ideal ist eine Checkbox zu verwenden, aber wenn jemand die Radiobutton muss, dann müssen sie die Radiobutton.

  2. Dies ist keine optimale Lösung, da es im Grunde die Taste verwendet die Taste jedes Mal, zweimal klickt der Benutzer (eine davon ist das Standardverhalten, ist das zweite Mal in Ihrer Onclick-Funktion), wenn Sie also‘ Mit einem OnCheckedChangeListener erhalten Sie wahrscheinlich zwei Anrufe für den gleichen Klick.

  3. Es gibt eine weitere Problemumgehung, die Änderung der android:button in einem Kontrollkästchen zu einem anderen Zeichen mit einer XML-Vorlage, aber es ist ein bisschen komplexer, erfordert mindestens 2 weitere Dateien für die Staaten.

+1

Es funktioniert für mich. Vielen Dank – Vrajesh