Android 如何通过单击选项菜单获取contextview

Android 如何通过单击选项菜单获取contextview,android,Android,光环 我的想法是通过单击其中一个选项菜单来显示上下文菜单 我不认为这会很难,但我无法在选项菜单类中获得视图 实际上,它只是调用OptionsMenu类上的showContextMenu() 谁能给我一个提示吗 泰 我的想法是通过单击其中一个选项菜单来显示上下文菜单 另外,您不能通过长时间点击选项菜单来显示上下文菜单 我不认为这会很难,但我无法在选项菜单类中获得视图 视图不向您公开 要真正做到你想要的,唯一的办法就是不要使用标准的Android选项菜单。您可以通过活动中的onKeyDown()查看

光环

我的想法是通过单击其中一个选项菜单来显示上下文菜单

我不认为这会很难,但我无法在选项菜单类中获得视图

实际上,它只是调用OptionsMenu类上的showContextMenu()

谁能给我一个提示吗

我的想法是通过单击其中一个选项菜单来显示上下文菜单

另外,您不能通过长时间点击选项菜单来显示上下文菜单

我不认为这会很难,但我无法在选项菜单类中获得视图

视图不向您公开

要真正做到你想要的,唯一的办法就是不要使用标准的Android选项菜单。您可以通过活动中的
onKeyDown()
查看菜单键,此时您可以显示您想要的任何内容,包括支持上下文菜单的内容

然而,上下文菜单在用户中并不特别流行,这仅仅是因为它们不易被发现。即使提供了文档,用户也不会阅读文档,而且他们也不会随机插入屏幕以查看是否会弹出菜单。他们甚至不太可能决定按下一个假选项菜单选项来查看上下文菜单是否会弹出


<> P>因此,我确实建议您考虑其他方法,以提高可用性。

可以通过长时间的按压来调用上下文菜单。如果您在活动中实现菜单选项,例如使用内部类,您应该能够调用上下文菜单:

yourView.showContextMenu()

记住在onCreate上注册上下文菜单:


registerForContextMenu(yourView)

最终成功了,这是一个非常简单的解决方案

基本上,我将视图传递给options菜单构造函数

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.activity_event);

    View v = findViewById(R.id.activity_event);

    registerForContextMenu(v);

    options = new Options(getApplicationContext(), getMenuInflater(), v);

    fillData(); 
}


谢谢你的帮助。

为什么?那不是上下文菜单。上下文菜单有一个上下文。你到底想做什么?我不是想通过点击活动中的某个特定项目来显示上下文菜单,而是通过点击其中一个选项菜单来显示上下文菜单。Falmari是正确的。如果在单击“选项”菜单时需要上下文菜单,则表示您有一个选择。在很大程度上,Android不鼓励维护选择。事实上,这正是我想要做的。但是如何才能在onMenuItemSelected->public void onMenuItemSelected(int featureId,MenuItem项)上获得视图v(与ListItemClick->protected void onListItemClick(ListView l,View v,int position,long id)一起提供)?
   private class Options extends ActivityOptionsMenu {
        public Options(Context c, MenuInflater mi, View v) {
           super(c, mi, v);
         }
   }
     private abstract class ActivityOptionsMenu {
     ...

         public void onMenuItemSelected(int featureId, MenuItem item) {
            switch (item.getItemId()) {
            case R.id.directions:
                v.showContextMenu();
            }
         }
   }