Android之菜单(一)

注:本文只是一个学习笔记 用以记录自己学到哪了

在学习选项菜单之前我有遇到一个问题 eclipse报警告:Activity not started, its current task has been brought to the front 大概的意思是你的activity不能创建,eclipse当前已经有一个任务在运行 解决办法:project->clean

下面开始本次学习笔记

option菜单用到的几个函数 都是需要覆盖的

public boolean onCreateOptionsMenu(Menu menu): 使用此方法调用OptionsMenu

public boolean onOptionsItemSelected(MenuItem item): 选中菜单项后发生的动作

    public void onOptionsMenuClosed(Menu menu): 菜单关闭后发生的动作

   public boolean onPrepareOptionsMenu(Menu menu): 选项菜单显示之前onPrepareOptionsMenu方法会被调用

   public boolean onMenuOpened(int featureId, Menu menu): 单击打开后发生的动作

本次activity 为菜单项添加ID

public class MainActivity extends Activity { //定义标识菜单项的ID常量 Menu.FIRST = 1 private static final int ITEM1 =Menu.FIRST; private static final int ITEM2 = ITEM1 + 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }

添加菜单

public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,ITEM1,0,"开始游戏").setIcon(R.drawable.start); menu.add(1,ITEM2,1,"退出游戏").setIcon(R.drawable.exit); return true; // 这里要返回true 否则菜单不显示 }处理菜单项的单击事件

public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case ITEM1: { Toast.makeText(this, "开始游戏", Toast.LENGTH_LONG).show(); // 不要忘记要加show() break; } case ITEM2: { Toast.makeText(this, "退出游戏", Toast.LENGTH_LONG).show(); break; } } return super.onOptionsItemSelected(item); }运行效果:

Android之菜单(一)

子菜单(subMenu) public interface SubMenu extends Menu

//子菜单subMenu public class SubMenuActivity extends Activity { private final static int ITEM_NEW_FILE=Menu.FIRST; private final static int ITEM_OPEN_FILE=Menu.FIRST+1; private final static int ITEM_COPY=Menu.FIRST+2; private final static int ITEM_CLOSE=Menu.FIRST+3; private final static int ITEM_SAVE=Menu.FIRST+4; private final static int ITEM_SAVE_ALL=Menu.FIRST+5; private final static int ITEM_CUT=Menu.FIRST+6; private final static int ITEM_PASTE=Menu.FIRST+7; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sub_menu); setTitle("单击Menu键看到效果!"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // 为菜单项添加子菜单(名字叫文件) SubMenu file=menu.addSubMenu("文件"); // 为子菜单添加图标 file.setIcon(android.R.drawable.ic_menu_info_details); // 为菜单项添加子菜单(名字叫编辑) SubMenu edit=menu.addSubMenu("编辑"); edit.setIcon(android.R.drawable.ic_menu_edit); // 为子菜单(文件)添加选项 file.add(0,ITEM_NEW_FILE,0,"新建"); file.add(0,ITEM_OPEN_FILE,0,"打开"); file.add(0,ITEM_CLOSE,0,"关闭"); file.add(0,ITEM_SAVE,0,"保存"); file.add(0,ITEM_SAVE_ALL,0,"保存全部"); // 为子菜单(编辑)添加选项 edit.add(0,ITEM_COPY,0,"复制"); edit.add(0,ITEM_CUT,0,"剪切"); edit.add(0,ITEM_PASTE,0,"粘贴"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // 响应那些菜单选项 case ITEM_NEW_FILE: setTitle("新建文件!"); break; case ITEM_OPEN_FILE: setTitle("打开文件"); break; case ITEM_COPY: setTitle("复制文件"); break; default: break; } return true; } }
显示效果 :

Android之菜单(一)Android之菜单(一)Android之菜单(一)

(一) (二) (三)

点击文件出现图二 ,点击编辑出现图三 然后出现选项让你选择。