2016-06-16 7 views
0

Ich habe 2 statische Radiobuttons in Radiogruppe in XML wie folgt aus:Android Radiobutton ckecked zeigt aber nicht es

<RadioGroup 
    android:id="@id/rdg_feed_event" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/txt_feed_calendar" 
    android:layout_centerHorizontal="true" 
    **android:checkedButton="@id/rdb_feed_event"** 
    android:background="@drawable/radio_group_title" 
    android:divider="@drawable/divider_title" 
    android:orientation="horizontal" 
    android:showDividers="middle"> 

    <RadioButton 
     android:id="@id/rdb_feed_event" 
     style="@style/Theme.RadioButton" 
     android:background="@drawable/radio_btn_left_title" 
     android:fontFamily="@string/font_family_normal" 
     android:text="@string/feed_event" 
     android:textColor="@drawable/radio_btn_text_gray_black"/> 

    <RadioButton 
     android:id="@id/rdb_feed_event_my" 
     style="@style/Theme.RadioButton" 
     android:background="@drawable/radio_btn_right_title" 
     android:fontFamily="@string/font_family_normal" 
     android:text="@string/feed_event_my" 
     android:textColor="@drawable/radio_btn_text_gray_black"/> 
</RadioGroup> 

Dies alles Fragment in seiner onCreateView gesetzt:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    final View view = super.onCreateView(inflater, container, savedInstanceState); 

    mRdbEvent = (RadioButton) view.findViewById(R.id.rdb_feed_event); 
    mRdbEventMy = (RadioButton) view.findViewById(R.id.rdb_feed_event_my); 
    mRdgEvent = (RadioGroup) view.findViewById(R.id.rdg_feed_event); 
    .. 

Wenn ich zum ersten Mal App - die Schaltfläche "Ereignisse" wird aktiviert und es wird in der Ansicht angezeigt und der Ausdruck mRdgEvent.getCheckedRadioButtonId() == mRdbEvent.getId() gibt true zurück. Dann tippe ich auf den zweiten Radiobutton und danach tippe ich auf ein anderes Menü, das zu einem anderen Fragment führt (mit FragmentTransaction.replace). Danach kehre ich zum ersten Fragment zurück - wieder wird seine onCreateView Methode gestartet und wieder mRdgEvent.getCheckedRadioButtonId() == mRdbEvent.getId() in onCreateView gibt true zurück. Aber für diese Zeit wird der zweite Radioknopf in Sicht geprüft, nicht der erste. Aber der Code zeigt an, dass die Eins überprüft wird - wie es in xml deklariert ist, um standardmäßig überprüft zu werden. Wie kann das sein? Danke im Voraus.

+0

Geben Sie den Code "@ style/Theme.RadioButton" ein. Möglicherweise haben Sie etwas falsch gemacht –

+0

AlexInspired

+0

Deshalb. Sie erben nicht ein "RadioButton", Sie erweitern eine TextView, also hat Ihr RadioButton-Thema offensichtlich nicht die Attribute, die es benötigt. –

Antwort

0

hinzufügen android: checked = "true" in RadioButton- nicht in Radiogroup

<RadioButton 
     android:id="@id/rdb_feed_event" 
     style="@style/Theme.RadioButton" 
     android:background="@drawable/radio_btn_left_title" 
     android:fontFamily="@string/font_family_normal" 
     android:text="@string/feed_event" 
     android:checked="true" 
     android:textColor="@drawable/radio_btn_text_gray_black"/> 
+0

Hat nicht geholfen. Scheint wie Fragment seine Widgets automatisch speichert und sekundär sie mit Presaved-Werten kommen. Und egal, was in xml ist. – AlexInspired

1

I verzögert die Konfiguration der Taste und es funktionierte in onCreateView wie folgt aus:

view.post(new Runnable() { 
     public void run() { 
      mRdgEvent.check(mRdbEvent.getId()); 
     } 
    }); 
Verwandte Themen