1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

RadioButtons -> RadioGroup

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Tom299, 07.10.2011.

  1. Tom299, 07.10.2011 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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
     
  2. nijoX, 11.10.2011 #2
    nijoX

    nijoX Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    5
    Registriert seit:
    06.09.2011
    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
     
  3. Tom299, 11.10.2011 #3
    Tom299

    Tom299 Threadstarter Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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 ;-)
     
  4. nijoX, 11.10.2011 #4
    nijoX

    nijoX Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    5
    Registriert seit:
    06.09.2011
    so nach dem Motto isChecked();?
     
  5. Tom299, 11.10.2011 #5
    Tom299

    Tom299 Threadstarter Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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.
     

Diese Seite empfehlen