Android菜单 *** 作之创建并响应菜单

Android菜单 *** 作之创建并响应菜单,第1张

概述上一篇《学习理解Android菜单Menu *** 作》简单介绍了一下Android的菜单,今天让我们看一下如何通过代码创建响应最常用的选项菜单(optionsmenu)。

上一篇《学习理解Android菜单Menu *** 作》简单介绍了一下AndroID的菜单,今天让我们看一下如何通过代码创建和响应最常用的选项菜单(options menu)。

一、创建options menu

之前提到,AndroID的activity已经为我们提前创建好了androID.vIEw.Menu对象,并提供了回调方法onCreateOptionsMenu(Menu menu)供我们初始化菜单的内容。该方法只会在选项菜单第一次显示的时候被执行,如果你需要动态改变选项菜单的内容,请使用 onPrepareOptionsMenu(Menu)。

@OverrIDepublicboolean onCreateOptionsMenu(Menu menu) { // 调用父类方法来加入系统菜单 // 虽然目前androID还没有系统菜单,但是为了兼容到以后的版本,最好加上super.onCreateOptionsMenu(menu);  // 添加菜单项(多种方式) // 1.直接指定标题 menu.add("菜单项1"); // 2.通过资源指定标题 menu.add(R.string.menuitem2); // 3.显示指定菜单项的组号、ID、排序号、标题 menu.add(  1,//组号  Menu.FirsT,//唯一的ID号  Menu.FirsT,//排序号"菜单项3"); //标题  // 如果希望显示菜单,请返回truereturntrue;}

上面的代码演示了添加菜单项的3种方法,下面解释下第三种方法add(int groupID,int itemID,int order,CharSequence Title)。其中,第一个参数是组号,androID中你可以给菜单分组,以便快速地 *** 作同一组的菜单。第二个参数指定每个菜单项的唯一ID号,你可以自己指定,也可以让系统来自动分配,在响应菜单时你需要通过ID号来判断哪个菜单被点击了。因此常规的做法是定义一些ID常量,但在androID中有更好的方法,就是通过资源文件来引用,这个之后介绍。第三个参数代表菜单项显示顺序的编号,编号小的显示在前面。

二、给菜单项分组

@OverrIDepublicboolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // 添加4个菜单项,分成2组int group1 =1; int gourp2 =2; menu.add(group1,1,"item 1"); menu.add(group1,2,"item 2"); menu.add(gourp2,3,"item 3"); menu.add(gourp2,4,"item 4"); // 显示菜单returntrue;}

你可以向上面这样给菜单项分组,分组之后就能使用menu中提供的方法对组进行 *** 作了,如下:

menu.removeGroup(group1); //删除一组菜单menu.setGroupVisible(gourp2,visible); //设置一组菜单是否可见menu.setGroupEnabled(gourp2,enabled); //设置一组菜单是否可点menu.setGroupCheckable(gourp2,checkable,exclusive); //设置一组菜单的勾选情况

三、响应菜单项

androID提供了多种响应菜单项的方式,下面一一介绍

1、通过onoptionsItemSelected方法
使用的最多方法是重写activity类的 onoptionsItemSelected(MenuItem)回调方法,每当有菜单项被点击时,androID就会调用该方法,并传入被点击菜单项。

@OverrIDepublicboolean onoptionsItemSelected(MenuItem item) { switch (item.getItemID()) { //响应每个菜单项(通过菜单项的ID)case1: // do something herebreak; case2: // do something herebreak; case3: // do something herebreak; case4: // do something herebreak; default: //对没有处理的事件,交给父类来处理returnsuper.onoptionsItemSelected(item); } //返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了returntrue;}

以上代码可作为使用onoptionsItemSelected方法响应菜单的模板来使用,这里为了方便起见将菜单ID硬编码在程序里,你可以使用常量或资源ID来使代码更健壮。

2.使用监听器
虽然第一种方法是推荐使用的方法,androID还是提供了类似java swing的监听器方式来响应菜单。使用监听器的方式分为两步:

//第一步:创建监听器类class MyMenuItemClickListener implements OnMenuItemClickListener { @OverrIDe publicboolean onMenuItemClick(MenuItem item) { // do something here...returntrue; //finish handling }}//第二步:为菜单项注册监听器menuItem.setonMenuItemClickListener(new MyMenuItemClickListener());

 androID文档对onMenuItemClick(MenuItem item)回调方法的说明是"Called when a menu item has been invoked. This is the first code that is executed; if it returns true,no other callbacks will be executed." 可见该方法先于onoptionsItemSelected执行。

3.使用Intent响应菜单
第3种方式是直接在MenuItem上调用setIntent(Intent intent)方法,这样androID会自动在该菜单被点击时调用 startActivity(Intent)。但是个人认为与其这样还不如直接在onoptionsItemSelected的case里手动调用 startActivity(Intent)来的直观。

结语

本文详细介绍了如何创建和响应选项菜单,下一篇《AndroID菜单 *** 作之SubMenu和IconMenu》将继续介绍子菜单和图标菜单的使用,大家继续关注哦。

总结

以上是内存溢出为你收集整理的Android菜单 *** 作之创建并响应菜单全部内容,希望文章能够帮你解决Android菜单 *** 作之创建并响应菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1149427.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存