Je développe une application pour un service d'enquête. L'utilisateur doit entrer son pays pour s'inscrire. J'utilise un alertDialog
en utilisant radio buttons
.ArrayIndexOutOfBounds dans Radio Button alertDialog
Voici mon code java:
public void onClickCountrySCI(View view) {
final String[] CategorySelected = {null};
final String categories[] = {"USA", "Mexico", "Canada"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Country:");
builder.setSingleChoiceItems(categories, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
CategorySelected[0] = categories[i];
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (CategorySelected[0].equals("USA")) {
et4.append(categories[i]);
} else if (CategorySelected[1].equals("Mexico")) {
et4.append(categories[i]);
} else if (CategorySelected[2].equals("Canada")) {
et4.append(categories[i]);
}
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
}).create();
builder.show();
}
Je continue à obtenir une erreur. C'est
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
Comment puis-je me débarrasser de cela? Merci d'avance.
EDIT MISE À JOUR CODE
public void onClickCountrySCI(View view) {
final String[] CategorySelected ={""};
final String categories[] = {"USA", "Mexico", "Canada"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Country:");
builder.setSingleChoiceItems(categories, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
CategorySelected[0] = categories[i];
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (CategorySelected.equals("USA")) {
et4.append(categories[i]);
} else if (CategorySelected.equals("Mexico")) {
et4.append(categories[i]);
} else if (CategorySelected.equals("Canada")) {
et4.append(categories[i]);
}
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
}).create();
builder.show();
}
Voici mon code mis à jour.
Voici mon EditText XML:
<EditText
android:onClick="onClickCountrySCI"
android:focusable="false"
android:inputType="text"
android:layout_marginTop="10dp"
android:layout_marginStart="15dp"
android:layout_below="@+id/et_fourteen_sci"
android:id="@+id/et_fifteen_sci"
android:hint="Country"
android:textColor="@color/colorAccent"
android:backgroundTint="@color/colorPrimary"
android:layout_width="330dp"
android:layout_height="45dp" />
Ceci est tout mon code mis à jour.
Je n'obtiens plus d'erreurs, mais les valeurs des boutons radio sont placées dans le texte EditText.
Vérifiez combien de données il ya. '[n]' ?? –
Voici le problème avec le tableau CategorySelected []. Vous avez initialisé avec la même taille de catégories []. par exemple. final String [] CategorySelected = {null, null, null}; –
Au lieu d'utiliser array, vous devriez utiliser simplement string. Convertir la catégorie sélectionnée du tableau en chaîne – iamdeowanshi