Ich schreibe eine Activity
in Android, bei der ich zwei Radioknöpfe unter einer Radiogruppe habe. Eine davon ist standardmäßig aktiviert. Ich kann das Ereignis jedoch nicht in der onCreate
-Methode auslösen, damit ich etwas tun kann. Die onCheckedChanged
läuft einwandfrei, wenn Sie darauf klicken.
RadioGroup ItemtypeGroup = (RadioGroup) findViewById(R.id.rechargeItemtype);
RadioButton providerRadio = (RadioButton) findViewById(R.id.a);
providerRadio.performClick();
ItemtypeGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged (RadioGroup group,int checkedId){
Log.d("chk", "id" + checkedId);
if (checkedId == R.id.a) {
//some code
} else if (checkedId == R.id.b) {
//some code
}
}
});
Aktivieren eines Kontrollkästchens für den Standard bei der Initialisierung. Setzen Sie mit der clearCheck-Methode alles auf Deaktiviert, legen Sie dann den Handler fest, und legen Sie den Standard fest.
itemtypeGroup.clearCheck();
dann wie üblich einen Listener hinzufügen ...
itemtypeGroup
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.d("chk", "id" + checkedId);
if (checkedId == R.id.a) {
//some code
} else if (checkedId == R.id.b) {
//some code
}
}
});
Aktivieren Sie dann das Standard-Optionsfeld, und der Listener wird ausgelöst.
rb = (RadioButton) view.findViewById(R.id.a);
rb.setChecked(true);
Viel Glück
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.radioButton1) {
//do work when radioButton1 is active
} else if (checkedId == R.id.radioButton2) {
//do work when radioButton2 is active
} else if (checkedId == R.id.radioButton3) {
//do work when radioButton3 is active
}
}
});
diese Arbeit für mich. Hoffnung ist hilfreich
Versuchen Sie diesen Code.
Deklarieren Sie diesen Code in Ihrer onCreate-Methode.
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
radioGroup.clearCheck();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if (null != rb && checkedId > -1) {
// checkedId is the RadioButton selected
switch (checkedId) {
case R.id.one:
// Do Something
break;
case R.id.two:
// Do Something
break;
case R.id.three:
// Do Something
break;
}
}
}
});
Hoffe das hilft.
Das Problem ist, dass Sie OnCheckedChangeListener
on RadioGroup
nach dem providerRadio.performClick();
Methodenaufruf einstellen.
Wenn die providerRadio.performClick();
-Methode bis dahin ausgeführt wird, ist daher keine OnCheckedChangeListener
verfügbar. Damit dies funktioniert, müssen Sie Listener vor dem Aufruf der performClick()
-Methode festlegen.
Statt RadioButton.performClick()
zu verwenden, sollten Sie die RadioGroup.check()
-Methode verwenden, um die aktuell geprüfte RadioButton
zu ändern.
Sie können diesen Code also verwenden, um die aktuelle Auswahl der Radiogruppe zu ändern
RadioGroup ItemtypeGroup = (RadioGroup) findViewById(R.id.rechargeItemtype);
ItemtypeGroup
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.d("chk", "id" + checkedId);
if (checkedId == R.id.a) {
//some code
} else if (checkedId == R.id.b) {
//some code
}
}
});
ItemtypeGroup.check(R.id.a);
Hinweis : - Stellen Sie sicher, dass Sie RadioGroup.check()
nach dem Hinzufügen von OnCheckedChangeListener
wie oben im Codeausschnitt aufrufen.
Ich denke, Sie führen einen Klick durch, bevor Sie den Listener auf die Gruppe setzen. Deshalb wird das Ereignis nicht ausgelöst.