预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android开发教程之加入菜单(Menu)在进一步学习Intent与Activity之前,我们先来完善我们的应用程序。在前几章中,我们把"openOptionsDialog"这个用来弹出对话框的函数,放进"calcBMI"这个按钮元件的"OnClickListener"方法中。现在,我们要把"openOptionsDialog"移出"OnClickListener"方法,改成按下"Menu"键后,跳出一个菜单列(MenuBar)。当我们点击菜单列中的选项后,才弹出"openOptionsDialog"的对话框。完整的程序码如下:代码:1protectedstaticfinalintMENU_ABOUT=Menu.FIRST;2protectedstaticfinalintMENU_Quit=Menu.FIRST+1;34@Override5publicbooleanonCreateOptionsMenu(Menumenu){6super.onCreateOptionsMenu(menu);7menu.add(0,MENU_ABOUT,0,"关于...");8menu.add(0,MENU_Quit,0,"结束");9returntrue;10}12publicbooleanonOptionsItemSelected(MenuItemitem)13{14super.onOptionsItemSelected(item);15switch(item.getItemId()){16caseMENU_ABOUT:17openOptionsDialog();18break;19caseMENU_Quit:20finish();21break;22}23returntrue;24}每个菜单都包含两个部分:1.建立菜单2.处理选项动作"onCreateOptionsMenu"函数即菜单列的主体。在Android机器或模拟器上按下硬体的"Menu"(菜单)键,所弹出的菜单列即是靠"onCreateOptionsMenu"函数来定义。当我们在Activity中定义了"onCreateOptionsMenu"之后,按下"Menu"(菜单)键时,就会弹出相对应的菜单列。当我们在Android应用程序的菜单列上选择了相应的选项后,则是依赖"onOptionsItemSelected"函数,来负责处理菜单列中各选项所个别对应的动作。在上面的程序里,我们定义了"关于..."与"结束"两个菜单列中的选项。我们分部分讲解如下:在"onCreateOptionsMenu"函数中,我们定义了两个菜单列中的选项。分行讲解如下:代码:@OverridepublicbooleanonCreateOptionsMenu(Menumenu){super.onCreateOptionsMenu(menu);returntrue;}"onCreateOptionsMenu"这个函数是菜单列的主体,它是一个"public"(公开)的函数。函数传入一个"Menu"(菜单)型别的"menu"参数。"boolean"则表示函数的返回值必须为"boolean"型别的值。因此在函数最后,我们提供函数一个返回值"true"。"@Override"表示我们要完全重写掉已定义在"Activity"类别中的这个函数。基于与onCreate函数一样的原因,因为我们把菜单列原本的动作覆载(Override)掉了,因此在撰写我们自己的内容前,加上一句"super.onCreateOptionsMenu(menu)"叙述,用来呼叫"onCreateOptionsMenu"函数执行预设的动作。代码:menu.add(0,MENU_ABOUT,0,"关于...");menu.add(0,MENU_Quit,0,"结束");Android每个页面对应到一个Activity,每个Activity都有一个独立的菜单列。对传入的"menu"参数作处理就能改变菜单列的内容。我们看到,增加一个菜单列中选项的格式如下:menu.add(0,识别符号(identifer),0,字串或资源识别符号);最后一栏"字串或资源识别符号"就是显示在萤幕上的叙述。而"识别符号"的目的则是作为这个选项的标籤,以供后续处理选项动作时,更容易辨认出所对应的选项。代码:protectedstaticfinalintMENU_ABOUT=Menu.FIRST;protectedstaticfinalintMENU_Quit=Menu.FIRST+1;我们看到MENU_ABOUT识别符号的定义,是一个固定的常数型别(staticfinalint)。"Menu.FIRST"则代表识别菜单开头的数字,当然我们也可以把这"Menu.FIRST"代号直