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);
    }
运行效果:            

            

② 子菜单(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;
	}
}

显示效果 :


                                   (一)                                               (二)                                                                                   (三)

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值