如何知道单击了哪个视图以打开上下文菜单?

Posted

技术标签:

【中文标题】如何知道单击了哪个视图以打开上下文菜单?【英文标题】:how to know what view is clicked to open context menu? 【发布时间】:2012-09-02 13:38:37 【问题描述】:

我有两个按钮用于注册上下文菜单

but1=(ImageButton)findViewById(R.id.imageViewX);
but2=(ImageButton)findViewById(R.id.imageViewY);      
registerForContextMenu(but);
registerForContextMenu(but2);

我在 onContextItemSelected(MenuItem item) 有一个问题,如何知道用户是点击 but1 还是 but2 ? id=item.getItemId();我选择了项目的 ID,但我想知道在 onContextItemSelected 方法中单击了哪个按钮。

【问题讨论】:

【参考方案1】:

当您创建 contextitem 时,为两个 Imagebuttons 中的每一个创建唯一的 id

 public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
 
   if(view.getId() == R.id.imageViewX)
      menu.add(Menu.NONE, Menu.FIRST+1, Menu.NONE, "imageViewX");
   else     
      menu.add(Menu.NONE, Menu.FIRST+10, Menu.NONE, "imageViewY");

   super.onCreateContextMenu(menu, view, menuInfo);
 

public boolean onContextItemSelected(MenuItem item) 
    if (item.getItemId() == (Menu.FIRST+1)) 
       //do something
    else if(item.getItemId() == (Menu.FIRST+10))
       //do something else
    


【讨论】:

以上是关于如何知道单击了哪个视图以打开上下文菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何从单击项目打开列表视图?

使 C++ 应用程序“以...打开”

如何跟踪 ItemsControl 的哪个元素导致上下文菜单打开?

从Visual Studio代码源代码控制窗格上下文菜单中提供“打开文件”命令

检测在列表视图内单击并显示上下文菜单

Catalyst - 以编程方式打开上下文菜单