Oui, je sais qu'il y a AlertDialog.Builder, mais je suis choqué de savoir à quel point (enfin, du moins pas convivial pour les programmeurs) d'afficher une boîte de dialogue dans Android.
J'étais auparavant un développeur .NET, et je me demande s'il existe un équivalent Android des éléments suivants?
if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
// Do something...
}
Réponses:
AlertDialog.Builder n'est vraiment pas si difficile à utiliser. C'est un peu intimidant au début, bien sûr, mais une fois que vous l'avez utilisé un peu, c'est à la fois simple et puissant. Je sais que vous avez dit que vous savez comment l'utiliser, mais voici tout de même un exemple simple:
Vous pouvez également le réutiliser
DialogInterface.OnClickListener
si vous avez d'autres cases oui / non qui devraient faire la même chose.Si vous créez la boîte de dialogue à partir d'un
View.OnClickListener
, vous pouvez utiliserview.getContext()
pour obtenir le contexte. Vous pouvez également utiliseryourFragmentName.getActivity()
.la source
AlertDialog.Builder builder = new AlertDialog.Builder(getView().getContext());
Essaye ça:
la source
The constructor AlertDialog.Builder(MainActivity.DrawerItemClickListener) is undefined
La réponse de Steve H est juste, mais voici un peu plus d'informations: la raison pour laquelle les boîtes de dialogue fonctionnent comme elles le sont parce que les boîtes de dialogue dans Android sont asynchrones (l'exécution ne s'arrête pas lorsque la boîte de dialogue est affichée). Pour cette raison, vous devez utiliser un rappel pour gérer la sélection de l'utilisateur.
Consultez cette question pour une discussion plus longue entre les différences dans Android et .NET (en ce qui concerne les dialogues): Dialogs / AlertDialogs: Comment "bloquer l'exécution" pendant que la boîte de dialogue est ouverte (style .NET)
la source
Cela fonctionne pour moi:
la source
Demander à une personne si elle veut appeler ou non Dialog ..
la source
La réponse de Steves est correcte mais obsolète avec des fragments. Voici un exemple avec FragmentDialog.
La classe:
Pour démarrer la boîte de dialogue:
Vous pouvez également laisser la classe implémenter
onClickListener
et utiliser cela au lieu d'écouteurs intégrés.la source
Merci nikki votre réponse m'a aidé à améliorer un existant simplement en ajoutant mon action souhaitée comme suit
la source
À Kotlin:
la source
Afficher la boîte de dialogue de manière anonyme comme une chaîne de commandes et sans définir un autre objet:
la source
Toutes les réponses ici se résument à un code long et peu convivial: juste ce que la personne qui demandait essayait d'éviter. Pour moi, l'approche la plus simple était d'employer des lambdas ici:
Lambdas dans Android nécessite le plugin retrolambda ( https://github.com/evant/gradle-retrolambda ), mais il est de toute façon extrêmement utile pour écrire du code plus propre.
la source
Merci. J'utilise l'API niveau 2 (Android 1.1) et au lieu de
BUTTON_POSITIVE
etBUTTON_NEGATIVE
je dois utiliserBUTTON1
etBUTTON2
.la source
1.Créez le message, le titre et le bouton Positif, Négatif AlertDialog:
2. Maintenant, trouvez les deux boutons sur DialogInterface Cliquez puis setOnClickListener ():
3.Pour afficher le dialogue d'alerte:
Remarque: N'oubliez pas le mot-clé final avec AlertDialog.
la source
la source
vous pouvez implémenter une solution générique pour les décisions et utiliser dans un autre cas non seulement pour oui / non et personnaliser l'alerte avec des animations ou une mise en page:
Quelque chose comme ça; créez d'abord votre classe pour le transfert de données:
après une interface pour retourner le résultat
Vous pouvez maintenant créer facilement des utilitaires d'accès (dans cette classe, vous pouvez implémenter différentes animations ou dispositions personnalisées pour l'alerte):
et le dernier appel en activité ou fragment; vous pouvez l'utiliser dans votre cas ou pour une autre tâche:
la source
Vous pouvez le faire si facilement à Kotlin:
la source
Pour Kotlin dans Android ::
la source
Implémentation de Kotlin.
Vous pouvez créer une fonction simple comme celle-ci:
et appelez-le comme ceci:
la source