J'utilise listpreference dans mon application Android et que vous obtenez mes valeurs clés et tout va bien et que vous travaillez bien (maintenant que vous m'avez aidé) mais - lorsque mon groupe de menus ListPréférence ne contient que un bouton d'annulation. p>
Disons que l'utilisateur choisit entre rouge, bleu et vert. Lorsque la boîte de dialogue LISTPRREFERENCED est d'abord abordée, la boîte de dialogue indique uniquement un bouton Annuler. Pour cette raison, la boîte de dialogue disparaît dès que l'utilisateur sélectionne leur choix. J'aimerais que, lorsque l'utilisateur choisit son réglage, ils voient que le bouton radio est mis en surbrillance, puis sur le bouton OK et clique sur le bouton OK ... mais je n'ai pas de bouton OK et ne peut pas comprendre pourquoi. Toute aide serait géniale ... al p>
4 Réponses :
Vous pouvez cloner et réimplément Cependant, listpreference code> pour fonctionner comme vous le souhaitez, créant votre propre préférence
de préférence code> en conséquence.
listpreference < / code> est configuré pour simplement utiliser un bouton négatif ("Annuler"). Comme indique le code source: p>
J'ai fait ce que la réponse précédente a suggéré et mis en œuvre ma propre liste de liste de liste basée sur le code source Android. Vous trouverez ci-dessous mon implémentation qui ajoute le bouton OK.
myPreferenCelist.java p> alors vous pouvez utiliser la classe dans votre préférence.xml comme suit: p> < Pré> xxx pré> p>
Pour être plus spécifique: implémente dialoginterface.onclicklistener
Le code par Techi50 est correct, mais ne fonctionne pas pour "Bouton Annuler". Voici quelques modifications:
protected void onPrepareDialogBuilder(Builder builder) { super.onPrepareDialogBuilder(builder); prevDialogEntryIndex = getValueIndex(); // add this mClickedDialogEntryIndex = getValueIndex(); builder.setSingleChoiceItems(this.getEntries(), mClickedDialogEntryIndex, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mClickedDialogEntryIndex = which; } }); builder.setPositiveButton("OK", this); } public void onClick (DialogInterface dialog, int which) { // when u click Cancel: which = -2; // when u click OK: which = -1; if(which == -2){ this.setValue(this.getEntryValues()[prevDialogEntryIndex]+""); } else { this.setValue(this.getEntryValues()[mClickedDialogEntryIndex]+""); } }
La solution proposée par Techi50 et Ajinkya fonctionne bien. Toutefois, si vous avez aussi l'ONPRÉFERENCECHANGENERNER, cela ne tire pas.
public void onClick (DialogInterface dialog, int which) { if(which == -2) { this.setValue(this.getEntryValues()[mClickedDialogEntryIndexPrev]+""); } else { String value = this.getEntryValues()[mClickedDialogEntryIndex] + ""; this.setValue(value); callChangeListener(value); } }