2017-06-07 7 views
2

Lorsque vous utilisez anko sélecteur comme il est prévu dans les exemples, il ne fonctionne pasKotlin anko sélecteur commun ne fonctionne pas comme dans les exemples fournis

val countries = listOf("Russia", "USA", "Japan", "Australia") 
selector("Where are you from?", countries) { i -> 
    toast("So you're living in ${countries[i]}, right?") 
} 

ici lors de la définition de la fonction lambda, il dit attendre deux types d'arguments. (Dialoginterface et int). Je suis coincé avec ça. Alos le kotlin alertdialog par défaut dit la même chose. Est-ce que anywone peut résoudre ce problème ou me dire comment construire une boîte de dialogue d'alerte avec la sélection dans kotlin?

Répondre

2

On dirait que c'est une erreur dans l'exemple.

Le selector function source dit qu'il attend (DialogInterface, Int) -> Unit, une fonction avec deux paramètres, de sorte que vous pouvez corriger votre code en ajoutant le paramètre manquant comme suit:

selector("Where are you from?", countries) { dialogInterface, i -> /* ... */ } 

Ou, si vous n'utilisez pas le DialogInterface, juste l'ignorer avec un trait de soulignement:

selector("Where are you from?", countries) { _, i -> /* ... */ } 
+0

Merci beaucoup. Une chose de plus, quelle est l'utilité de cette interface de dialogue? –

+0

Je crois que c'est pour un cas où vous voulez appeler son ['cancel()' ou 'rejeter()'] (https://stackoverflow.com/questions/12139335/what-is-difference-between-dialoginterface-dismiss -and-dialoginterface-can) dans votre gestionnaire d'événements. Je n'ai trouvé rien d'autre dans [ses docs] (https://developer.android.com/reference/android/content/DialogInterface.html) qui aurait l'air utile. – hotkey

+0

Je reçois une référence non résolue pour le sélecteur. J'inclus les dépendances pour les ank-commons comme indiqué par les docs. Quelqu'un d'autre l'obtient? – airowe