0 Comments

动态添加、修改和删除选项菜单

发布于:2012-11-20  |   作者:广州网站建设  |   已聚集:人围观
动态添加、修改和删除选项菜单

在很多Android系统中,需要在程序的运行过程中根据具体情况动态地对选项菜单进行处理,例如,增加菜单项、修改菜单项的标题和图像。实现这个功能的关键是获得描述选项菜单的Menu对象。广州网站建设

Activity类中的很多方法都可以获得Menu对象。例如, onCreateOptionsMenu方法的menu参数就是Menu类型,我们要做的就是在onCreateOptionsMenu方法中将Menu对象保存在类变量中。下面的代码动态地向选项菜单中添加了5个菜单项:广州网站建设


  1. public class Main extends Activity implements OnMenuItemClickListener,  
  2.         OnClickListener  
  3. {  
  4.     private Menu menu;  
  5.     private int menuItemId = Menu.FIRST;        //  Menu.FIRST的值是1  
  6.     @Override  
  7.     public void onClick(View view)  
  8.     {  
  9.         //  只有单击手机上的“Menu”按钮,onCreateOptionsMenu方法才会被调用,  
  10.         //  因此,如果不按“Menu”按钮,Main类的menu变量的值是null  
  11.         if (menu == null) return;  
  12.         // 向Activity菜单添加5个菜单项,菜单项的id从10开始  
  13.         for (int i = 10; i < 15; i++)  
  14.         {  
  15.             int id = menuItemId++;  
  16.             menu.add(1, id, id, "菜单" + i);  
  17.         }  
  18.     }  
  19.     @Override  
  20.     public boolean onCreateOptionsMenu(Menu menu)  
  21.     {  
  22.         this.menu = menu;            //  保存Menu变量  
  23.         return super.onCreateOptionsMenu(menu);  
  24.     }  
  25.     ... ...  
  26. }  

运行程序后,单击模拟器上的"Menu"按钮(为了调用onCreateOptionsMenu方法以获得Menu对象),然后单击"动态添加5个菜单项"按钮,再次单击模拟器上的"Menu"按钮,会看到选项菜单中最后一个"更多"或"More"菜单项,单击"更多"或"More"菜单项,将显示如图6.3所示的效果。广州网站设计

既然有了Menu对象,修改和删除指定的菜单项就变得非常容易了,读者可以使用Menu接口的相应方法来完成这些工作。广州网站设计

图6.3  动态添加的5个菜单项
飞机