注:本文只是一个学习笔记 用以记录自己学到哪了
在学习选项菜单之前我有遇到一个问题 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;
}
}
显示效果 :
(一) (二) (三)
点击文件出现图二 ,点击编辑出现图三 然后出现选项让你选择。