obtenez de l'affichage de l'id de oncontextitemselected
J'ai plusieurs boutons enregistré pour le menu contextuel
comment puis-je savoir quel bouton a été cliqué pour que le menu apparaisse?
ci-dessous est le pseudo-code que je vais utiliser. J'ai besoin de faire quelque chose pour laquelle bouton cliqué (j'ai quelques boutons de plus, pour être déclaré), comment puis-je savoir que le menu contextuel est activé à partir de laquelle clic sur le bouton.
EDIT: je crois que je n'ai pas à me faire comprendre, je voulais savoir quel bouton a été cliqué pour que le menu apparaisse. Pas de quel élément de menu est cliqué. De toute façon, j'ai une solution que je vais ajouter à très bientôt.
grâce
private static final int SEND_AS_TEXT = Menu.FIRST;
private static final int SEND_AS_IMAGE = Menu.FIRST + 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sendAllBtn = (Button)findViewById(R.id.sendAllBtn);
sendAllBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
registerForContextMenu(v);
openContextMenu(v);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
//TODO Auto-generated method stub
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()){
case SEND_AS_TEXT:
//do sth related to the button clicked
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
//TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(Menu.NONE, SEND_AS_TEXT, SEND_AS_TEXT, "Send As Text");
menu.add(Menu.NONE, SEND_AS_IMAGE, SEND_AS_IMAGE, "Send As Image");
}
- collez votre code que vous avez utilisé.
- Je suis désolé, j'ai été la navigation sur ce site, tout juste mobile maintenant. Détails 😀
InformationsquelleAutor Yaobin Then | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
Ok, merci beaucoup pour l'aide des autres qui effacer mes doutes sur la getItemId puisqu'il renvoie l'ID que j'ai affecté à l'élément de menu.
Dans mon cas, je voulais savoir quel bouton a été cliqué avant le contextmenu a été créé.
Pour ce faire, il suffit de créer une variable de type long pour stocker le bouton qui a été cliqué. L'ID du bouton peut être obtenu comme dans l'exemple suivant:
et, plus tard, je vais seulement besoin de se référer à cette btnId à faire ce que je veux.
Je pense qu'il est plus logique d'utiliser l'ID de la vue spécifique. Dire que vous avez une ListView peuplée d'éléments contenant vos données, mais certains des articles que vous avez créé séparateurs/en-têtes. Vous ne voulez pas que les séparateurs pour la gestion des clics/long clics.
Dans certains cas, il est tout à fait bien à tout simplement se référer à la "position" ou MenuInfo.id, mais en fonction de votre structure de données que vous pourriez avoir besoin de plus de contrôle.
Ce que vous pouvez faire, c'est ID pour les articles/points de vue au sein de votre ListView (point de vue.setId(x), où x représente l'ID de position/pour votre structure de données/objet. Puis, lors de la création d'un ContextMenu et de manipulation des sélections à l'intérieur, il ne le suit pour lire que ID out:
Si vous êtes à la recherche pour le code de vos données sous-jacentes (fournie par l'adaptateur de
getItemId(int)
), puis il suffit d'ajouter les lignes suivantes dans leonContextItemSelected
méthode:essayez ceci...