RadioButtons -> RadioGroup

T

Tom299

Stammgast
122
Hallo,

ich tu mir gerade schwer, meine RadioButtons zu einer Group zusammenzufassen, damit jeweils nur 1 Button aktiv sein kann.

das Problem ist, daß ich im Layout die RadioButtons nicht alle schön hintereinander stehen habe, wie man es ist den Beispielen immer sieht.

Mein Layout sieht etwa so aus:
LinearLayout vertical
|- TextView
|- LinearLayout horizontal
| |- TextView
| |- EditText
| |- RadioButton1
|
|- LinearLayout horizontal
| |- TextView
| |- EditText
| |- RadioButton2
|
|- LinearLayout horizontal
| |- TextView
| |- EditText
| |- RadioButton3
|
|- LinearLayout horizontal
| |- TextView
| |- EditText
| |- RadioButton4

wie bekomm ich es jetzt gescheit hin, die RadioButtons in eine RadioGroup zu bringen?

habs zuerst über den Code versucht, die RadioButtons per id geholt und dann versucht, in einer RadioGroup zu stecken. aber dann kommt die meldung, daß der RadioButton bereits eine parent view hat.

dann hab ich unterhalb des 1. TextViews eine RadioGroup im XML angelegt, aber das klappt irgendwie auch nicht, zumal man ja width, height und orientation angeben soll.

in java swing konnt man einfach ne gruppe anlegen, die buttons hinzufügen und schon hatte man die funktionalität.

sowas wie "parentGroup" oder "groupID" als eigenschaft beim RadioButton hab ich auch nicht gefunden. deswegen hab ich momentan keine idee mehr, wie ich die buttons in die gruppe bringe.

kann mir jemand nen tip geben? oder ist es mit meinem layout so nicht möglich und ich muß die funktionalität für die RadioButtons manuell im listener nachprogrammieren?


gruß,
tom
 
Moinsen,

Ich würde nen workarround vorschlagen wenn es nicht gehen sollte die aus dem LinearLayout rauszuholen und in eine RadioGroup zu packen.

Und zwar die einzelnen horizontal-ausgerichteten LinearLayouts weg nehmen, das vertikale LinearLayout zu einem RelativeLayout und dort dann die einzelnen Elemente so anordnen wie dus brauchst. Am bessten mit android:layout_weight arbeiten, um es richtig auszurichten. Damit ist auch eine RadioGroup kein Thema mehr, da die RadioButtons alle im selben parent liegen.


MfG nijoX
 
ja, ans relative layout hatte ich auch gedacht. aber irgendwie ist das ganze doch nicht so ausgereift mit der radio group. wieso muß eine radio group überhaupt ne view sein ... aber wat solls

ich habs jetzt einfach von hand überprüft, das ging auf jeden fall viel schneller als das ganze layout umzustellen ;-)
 
so nach dem Motto isChecked();?
 
ja, so in der art:

Code:
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        RadioButton radio = (RadioButton)buttonView;
        if (radio != null) {
            buttonStart.setEnabled(true);
            if (checkedRadioButton == 0) {
                // nothing to uncheck, ony store the checked button
                checkedRadioButton = radio.getId();
            }
            else {
                RadioButton uncheckRadio = (RadioButton)findViewById(checkedRadioButton);
                uncheckRadio.setChecked(false);
                checkedRadioButton = radio.getId();
            }
        }
    }
    
    private boolean checkResult() {
        if (checkedRadioButton != 0) {
            if (R.id.id_radio_1 == checkedRadioButton) {
                if (progressBar1.getProgress() == 100) {
                    return true;
                }
            }
            else if (R.id.id_radio_2 == checkedRadioButton) {
                if (progressBar2.getProgress() == 100) {
                    return true;
                }                
            }
            else if (R.id.id_radio_3 == checkedRadioButton) {
                if (progressBar3.getProgress() == 100) {
                    return true;
                }                
            }
            else if (R.id.id_radio_4 == checkedRadioButton) {
                if (progressBar4.getProgress() == 100) {
                    return true;
                }                
            }
            else if (R.id.id_radio_5 == checkedRadioButton) {
                if (progressBar5.getProgress() == 100) {
                    return true;
                }                
            }
            else if (R.id.id_radio_6 == checkedRadioButton) {
                if (progressBar6.getProgress() == 100) {
                    return true;
                }                
            }
        }
        
        return false;
    }
über die id kann ich ja feststellen, welcher radio selektiert wurde (also R.id.radio_x) und merk mir den int-wert und später beim check kann ich dann die id vergleichen.
 

Ähnliche Themen

A
Antworten
2
Aufrufe
861
Arif12
A
S
Antworten
8
Aufrufe
1.538
lordzwieback
lordzwieback
Zurück
Oben Unten