J'ai un morceau de code avec trois RadioButton
s dans un fichier RadioGroup
. Je veux définir un onCheckedListener
qui affichera la valeur du RadioButton
dans un Toast
. Cependant, ce que j'ai obtenu jusqu'à présent ne fonctionne pas. Comment obtenir la valeur de RadioButton
et l'afficher dans un Toast
? Voici mon code:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
public class MainActivity extends Activity {
RadioGroup rg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1);
final String value =
((RadioButton)findViewById(rg.getCheckedRadioButtonId()))
.getText().toString();
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
Toast.makeText(getBaseContext(), value, Toast.LENGTH_SHORT).show();
}
});
}
}
Fichier XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="152dp" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choose 1" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choose 2" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choose 3" />
</RadioGroup>
</RelativeLayout>
Dans le cas, si vous voulez faire un travail sur la sélection de l'un des boutons radio (sans avoir de bouton OK supplémentaire ou quelque chose), votre code est correct, peu mis à jour.
la source
la source
Pour toute personne qui remplit par programme et cherche à obtenir un index, vous remarquerez peut-être que le checkId change lorsque vous revenez à l'activité / fragment et que vous ajoutez à nouveau ces boutons radio. Une façon de contourner ce problème consiste à définir une balise avec l'index:
Puis dans votre auditeur:
la source
J'espère que cela fonctionne. Vous pouvez convertir votre sortie en chaîne de la manière ci-dessus.
gender.getCheckedRadioButtonId();
- le sexe est l'identifiant de RadioGroup.la source
la source
il suffit d'utiliser la fonction getCheckedRadioButtonId () pour déterminer si quelque chose est vérifié, si -1 est un retour, vous pouvez éviter l'apparition de toast
la source
la source
RadioGroup en XML
activity_main.xml
MainActivity.java
la source
Merci beaucoup à Chris.
Voici ma solution:
la source
J'ai également eu des problèmes pour obtenir les identifiants des boutons radio lorsque les RadioButtons sont générés dynamiquement. Cela ne semble pas fonctionner si vous essayez de définir manuellement l'utilisation de l'ID
RadioButton.setId()
. Ce qui a fonctionné pour moi, c'était d'utiliserView.getChildAt()
etView.getParent()
de parcourir les boutons radio et de déterminer lequel était coché. Tout ce dont vous avez besoin est d'abord d'obtenir le RadioGroup viafindViewById(R.id.myRadioGroup)
, puis de parcourir ses enfants. Vous saurez au fur et à mesure que vous parcourez le bouton sur lequel vous vous trouvez, et vous pouvez simplement l'utiliserRadioButton.isChecked()
pour déterminer si c'est le bouton qui a été coché.la source