2010-10-25 14 views
3

Je voudrais afficher un ContextMenu pour une vue personnalisée qui ne fait pas partie d'un AdapterView.Android: Comment créer un ContextMenu pour une vue personnalisée

J'ai appelé

myActivity.registerForContextMenu(myView); 

et ContextMenu montre déjà en place.

Mais je ne sais pas comment accéder aux données de myView dans

@Override 
onContextItemSelected(MenuItem item) //... 

Je pensais que je pouvais créer une coutume menuInfo dans

@Override 
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) //... 

Ceci est de la documentation: « menuInfo - Informations supplémentaires sur l'élément pour lequel le menu contextuel doit être affiché Cette information variera en fonction de la classe de v. "

Quelqu'un peut-il me donner un indice?

Répondre

5

Votre classe de vue personnalisée doit remplacer getContextMenuInfo() et renvoyer un objet personnalisé implémentant ContextMenuInfo (pas très difficile si l'interface n'a aucun membre!) Et qui contient les données supplémentaires par vue que vous voulez que le gestionnaire de menu-clic obtienne.

Vous pouvez ensuite accéder à cet objet à partir de onContextItemSelected(MenuItem item) en appelant item.getMenuInfo() et en renvoyant la valeur retournée.

+1

Très bien, merci! Cela m'a beaucoup aidé :) – cody

+0

pouvez-vous donner un exemple de code? Je suis coincé avec ça. –

+0

Je l'ai enfin fonctionné, j'utilisais GridView personnalisé dans lequel la méthode 'getContextMenuInfo()' n'était pas implémentée. J'ai posté [ici] (http://vinaybhargav.wordpress.com/2014/07/20/android-floating-context-menu-for-listviewgridview/) au cas où quelqu'un aurait besoin d'un échantillon. –