注:本文只是一个学习笔记 用以记录自己学到哪了
在学习选项菜单之前我有遇到一个问题 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); } 运行效果:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
上下文菜单用法与选项菜单差不多,也是需要覆盖几个方法
onCreateContextMenu(...)可以在这个方法里添加菜单项
onContextItemSelected(...) 响应菜单单击事件
registerForContextMenu(..)为视图注册上下文菜单
11