Android 多Activity下的 menu 处理


//onCreateOptionsMenu 在系统起动时,调用一次创建菜单,以后将不会被调用
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
     menu.add(0, 0, 0, R.string.menu_about).setIcon(Android.R.drawable.ic_menu_info_details);
     menu.add(0, 1, 1, R.string.menu_exit).setIcon(android.R.drawable.ic_menu_directions);
     return true;
    }


   
    /**
     * onOptionsItemSelected每当菜单被选择时,调用这个统一的处理函数
     * 处理Menu事件
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
     switch (item.getItemId())
     {
      case 0://关于 的信息显示
       break;

      case 1: //结束程序处理
       smssend.this.finish();
       break;
     }
     return true;
    }


    /**
     * onPrepareOptionsMenu中途或者在新的Activity中需要修改菜单项目中的内容,调用这个函数
     * 处理Menu事件
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu)
    {
     menu.clear();
     menu.add(0, menuEXIT, 1, "测试2")
      .setIcon(android.R.drawable.ic_menu_directions);
     return super.onPrepareOptionsMenu(menu);
    }

如果程序中,存在多个Activity,可以先创建 Activity 的一个基类,在这个新建立的基类中,放入上面这些菜单的函数。

接着后续的Activity窗体都继承这个基类,这样就能共享菜单模块。

如果某个Activity中需要定义与主菜单不同的菜单内容,则通过  onPrepareOptionsMenu 这个函数重构菜单,因为onCreateOptionsMenu只会被调用一次。

相关内容