Voici le scénario: J'ai une ListActivity, et un appui long sur un élément ouvre un menu contextuel. Un élément dans le menu contextuel est "supprimer", et cela ouvre une boîte de confirmation (et AlertDialog). Lorsque l'utilisateur appuie sur OK dans la boîte de dialogue de confirmation, j'ai besoin de connaître l'identifiant de l'élément sélectionné à l'origine, afin de pouvoir le supprimer.Comment puis-je transmettre l'ID de l'élément sélectionné d'un ListView à un AlertDialog sous Android?
Le flux ressemble à ceci:
This event: Causes Android to call: ----------------------------------------------------- Long press an item -> onCreateContextMenu() Select context menu item -> onContextItemSelected() call showDialog() -> onPrepareDialog() user clicks OK -> onClick()
Dans onCreateContextMenu et onContextMenuSelected, je peux obtenir à l'id de l'élément sélectionné de la ContextMenuInfo. Dans onPrepareDialog, cependant, je n'ai plus accès à cette information. Le problème est que onPrepareDialog a besoin de ces informations pour configurer un écouteur onClick sur son bouton POSITIVE.
Je sais que, lors d'onContextMenuSelected, je peux stocker l'ID de l'élément sélectionné dans un champ de mon activité. J'ai fait cela, et cela fonctionne. Mais c'est aussi vraiment moche. L'état d'état qu'il introduit me rend mal à l'aise. Est-ce que quelqu'un d'autre a vu un meilleur moyen de transmettre de telles informations que d'utiliser des champs dans l'activité?
D'accord ... c'est moche, mais ça va marcher. –
Cela me force à faire des suppositions sur la façon dont Android va faire appel à mon activité. Je pense que l'ordre que j'ai décrit dans ma question est correct, mais j'ai peut-être manqué quelques nuances, et cela pourrait changer à l'avenir au gré de Google. L'écriture de code sans état est préférable à l'écriture de code très dynamique. –