【问题标题】:Intercepting Android Menu button拦截 Android 菜单按钮
【发布时间】:2012-01-17 02:43:46
【问题描述】:

我有一个应用程序,当用户按下菜单按钮时,我想在其中显示我自己的菜单活动。我正在使用 onCreateOptionsMenu 方法启动我的活动,返回 false 以便不显示菜单。这是我的代码:

Intent intentMenu = new Intent(this, ActivityMenu.class);
startActivityForResult(intentMenu, 0);
return false;

这有效,但仅在第一次按下菜单按钮时。我知道这个方法只被调用一次。每次用户按下菜单按钮时如何调用它?还是我应该采用不同的方法?

【问题讨论】:

    标签: android


    【解决方案1】:

    不要使用onCreateOptionsMenu(),错误的地方。以下是通过在 Activity 中覆盖 onKeyDown() 方法的方法:

    @Override
    public boolean onKeyDown (int keyCode, KeyEvent event) {
    
        if (keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_BACK) {
            startActivityForResult(new Intent(this, ActivityMenu.class), 0);
    
            return true;
        }
    
        return super.onKeyDown( keyCode, event );
    }
    

    【讨论】:

      【解决方案2】:

      创建您的菜单类 看起来像这样:

      public class GlobalMenu extends Activity
      
      {
      
      public boolean onCreateOptionsMenu(Menu menu) 
      
      {
      
             MenuInflater inflater = getMenuInflater();
      
             inflater.inflate(R.menu.global_menu, menu);
      
             return true;
      
      }
      
      public boolean onOptionsItemSelected(MenuItem item)
      
      {
      
          switch(item.getItemId())
      
          {
      
              case R.id.GlobalSettings:
      
                                 // Write code to perform action
                  break;
      
              case R.id.Globalrefresh:
      
                                 // Write code to perform action
                  break;
      
              case R.id.Globalexit:
      
                                 // Write code to perform action
                  break;
      
              default:
      
          }
      
          return true;
      
      }
      
      
      
      }
      

      现在从你的主 Activity 扩展这个类,当你点击菜单按钮时,你不会在其中显示菜单。

      并创建 .xml 文件,如下所示:

      【讨论】:

      • 对不起 Dhaval,我想我可能没有说清楚。我想在用户按下菜单按钮时显示一个新屏幕(基于 ActivityMenu),我不想使用默认菜单系统。
      • 这不是显示android默认菜单。它显示了你不会的自定义菜单。
      • 如果您想在按下Menu 按钮后立即启动活动,请在onCreateOptionsMenu() 方法中执行所有启动操作。我不确定这种做法有多标准或好不好,但它应该有效
      • Sheik,我正在这样做,但它只被调用一次。无论如何,我现在已经通过处理 onKeyDown 事件中的菜单按下解决了这个问题,并从那里启动我的活动。
      • @NiMuSi:也许写下你的最终评论作为答案,因为这似乎也适用于我的上下文。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多