Ich erstelle eine RadioGroup aus XML
<RadioGroup Android:id="@+id/option"
Android:layout_width="match_parent"
Android:orientation="horizontal"
Android:checkedButton="@+id/block_scenario_off"
Android:layout_height="wrap_content">
<RadioButton
Android:layout_width="0dip"
Android:layout_weight="1"
Android:text="@string/option1"
Android:layout_height="wrap_content"
Android:id="@+id/option1"
Android:layout_gravity="center|left"
Android:onClick="@string/on_click"/>
<RadioButton
Android:layout_width="0dip"
Android:layout_weight="1"
Android:text="@string/option2"
Android:onClick="@string/on_click"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:id="@+id/option2"/>
<RadioButton
Android:layout_width="0dip"
Android:layout_weight="1"
Android:text="@string/option3"
Android:onClick="@string/on_click"
Android:layout_height="wrap_content"
Android:layout_gravity="center|right"
Android:id="@+id/option3" />
</RadioGroup>
Im Code Java) überprüfe ich programmgesteuert den ersten Code zur Erstellung von Aktivitäten (onCreate ()) wie folgt:
mOption = (RadioGroup) findViewById(R.id.option);
mOption.check(R.id.option1);
Wenn die Aktivität angezeigt wird, ist kein Optionsfeld aktiviert. Irgendeine Hilfe?
In Ihrem Layout können Sie Android:checked="true"
Zu CheckBox
hinzufügen, das Sie auswählen möchten.
Oder Sie können programmgesteuert die in der überprüfbaren Schnittstelle definierte Methode setChecked verwenden:
RadioButton b = (RadioButton) findViewById(R.id.option1); b.setChecked(true);
versuchen Sie dies, wenn Sie möchten, dass Ihr Optionsfeld basierend auf dem Wert einer Variablen, z. "genderStr", dann können Sie folgenden Codeausschnitt verwenden
if(genderStr.equals("Male"))
genderRG.check(R.id.maleRB);
else
genderRG.check(R.id.femaleRB);
Möglicherweise müssen Sie die Optionsfelder in der onCreate-Methode Ihres Codes deklarieren und verwenden.
RadioButton rb1 = (RadioButton) findViewById(R.id.option1);
rb1.setChecked(true);
Achtung! Wenn Sie den Radiobutton mit setChecked()
überprüfen, ändert sich der Status innerhalb der RadioGroup nicht. Diese Methode aus der radioGroup gibt beispielsweise ein falsches Ergebnis zurück: getCheckedRadioButtonId()
.
Überprüfen Sie die Funkgruppe immer mit
mOption.check(R.id.option1);
du wurdest gewarnt ;)
Nehmen Sie die Radiogruppe und schauen Sie die Kinder an, um festzustellen, ob sie deaktiviert sind.
RadioGroup rg = (RadioGroup) view;
int checked = savedInstanceState.getInt(wrap.getAttributeName());
if(checked != -1) {
RadioButton btn = (RadioButton) rg.getChildAt(checked);
btn.toggle();
}
Sie können auch die Methode getChildAt () verwenden. So was:
mOption = (RadioGroup) findViewById(R.id.option);
((RadioButton)mOption.getChildAt(0)).setChecked(true);
Ich benutze diesen Code, wenn ich mit Indizes für die Radiogruppe arbeite:
radioGroup.check(radioGroup.getChildAt(index).getId());
es funktioniert, wenn Sie Ihre mOption.check(R.id.option1);
in die onAttachedToWindow
-Methode einfügen oder folgendermaßen vorgehen:
view.post(new Runnable()
{
public void run()
{
// TODO Auto-generated method stub
mOption.check(R.id.option1);
}
});
der Grund kann sein, dass die Prüfmethode nur funktioniert, wenn die Funkgruppe tatsächlich gerendert wird.
Ich benutze diesen Code, während ich mit getId () für die Radiogruppe arbeite:
radiogroup.check(radiogroup.getChildAt(0).getId());
stellen Sie die Position gemäß Ihrem Entwurf von RadioGroup ein
hoffe das wird dir helfen!