什么方法可以捕获在自定义视图(布局)中选择的上下文菜单项?

Posted

技术标签:

【中文标题】什么方法可以捕获在自定义视图(布局)中选择的上下文菜单项?【英文标题】:What method to catch context menu item selected in custom view (layout)? 【发布时间】:2012-05-01 21:09:19 【问题描述】:

我有扩展 LinearLayout 的自定义视图

public class IntelligentComponent extends LinearLayout implements OnCreateContextMenuListener

我已经覆盖了 onCreateContextMenu 来创建上下文菜单,但我找不到 onConextItemSelected 方法来捕获选中的项目。

IntelligentComponent 类型的 onConextItemSelected(MenuItem) 方法必须覆盖或实现超类型方法

我应该使用什么方法?有某种监听器吗?

我这样创建我的菜单:

    @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
      if (v != this) return;
      menu.add(Menu.NONE, ValueType.SPEED.ordinal(), 0 , ValueType.SPEED.name());
      menu.add(Menu.NONE, ValueType.HEARTRATE.ordinal(), 1 , ValueType.HEARTRATE.name());
      menu.add(Menu.NONE, ValueType.DISTANCE.ordinal(), 2 , ValueType.DISTANCE.name());
      //v.setO

另外我没有使用 registerForContextMenu 方法,有问题吗?菜单显示正常,但我无法捕捉到项目选择事件。 感谢您的帮助。

【问题讨论】:

通过这个:droidnova.com/how-to-create-an-option-menu,427.html 那是为了活动,我需要在布局或自定义视图中这样做。这是行: @Override public boolean onOptionsItemSelected(MenuItem item) ,这是我的问题,我无法覆盖它,因为它不在视图中,而是在活动中。有没有办法创建上下文菜单并从视图内部处理它? 【参考方案1】:

这可能是一个愚蠢的答案,但您是否修正了方法名称中的拼写错误?

【讨论】:

是的,它也不是这样工作的:@Override public boolean onContextItemSelected(MenuItem item)

以上是关于什么方法可以捕获在自定义视图(布局)中选择的上下文菜单项?的主要内容,如果未能解决你的问题,请参考以下文章

在自定义tableviewcells中添加约束的最佳位置在哪里?

如何在自定义 ListView 中获取 EditText 的所有值

在自定义对话框中设置文本视图

如何在自定义视图中实现文本选择阴影,如 UIWebView

如何在自定义单元格中同步选择文本视图的事件?

在自定义容器视图中旋转时 AutoLayout 不会调整视图大小?