`
Que
  • 浏览: 15388 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[android] 构建menu的一种方法

 
阅读更多

通过menu resource 定义menu结构,具体做法如下:

 

在/res目录下新建目录 /menu,在menu目录下新建名为example_menu.xml的xml文件,xml文件代码如下

 

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/item1"
          android:title="@string/item1"
         />
    <group android:id="@+id/group">
        <item android:id="@+id/group_item1"
              android:onClick="onGroupItemClick"
              android:title="@string/group_item1"
              />
        <item android:id="@+id/group_item2"
              android:onClick="onGroupItemClick"
              android:title="@string/group_item2"
               />
    </group>
    <item android:id="@+id/submenu"
          android:title="@string/submenu_title"
          >
        <menu>
            <item android:id="@+id/submenu_item1"
                  android:title="@string/submenu_item1" />
        </menu>
    </item>
</menu>
 

 

其中上述文件中引用了/values/strings.xml中常量,strings.xml文件定义如下

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Example_Menu!</string>
    <string name="app_name">Example_Menu</string>
    <string name="item1">item1</string>
    <string name="group_item1">group_item1</string>
    <string name="group_item2">group_item2</string>
    <string name="submenu_title">submenu_title</string>
    <string name="submenu_item1">submenu_item1</string>
</resources>
 

  最后我们在activity文件中写如下代码生成并显示menu对象,只需复写activity中的onCreateOptionsMenu和onMenuItemSelected函数。

 

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		//获取Menu文件
		MenuInflater inflater = this.getMenuInflater();
		//把获取的menu文件实例填充到menu对象中
		inflater.inflate(R.menu.example_menu, menu);
		return true;
	}
    
	/**
	 * 响应注册了这个方法的MenuItem
	 * @param item
	 */
	public void onGroupItemClick(MenuItem item) {
		Log.d("h", ""+item.getItemId());
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "你点击了我"+item.getItemId(), Toast.LENGTH_SHORT).show();
		return super.onMenuItemSelected(featureId, item);
	}
	

 

  运行效果如下:

 


 

    这种构造menu的方法很方便吧。

 

    遇到的问题:

    大家应该注意到example_menu.xml文件中两个item标签中android:onClick="onGroupItemClick"属性应该响应我在activity中定义的onGroupItemClick(MenuItem item)方法的,

不过结果并不是那样,而帮助文档中说得很清除这个方法执行的优先级高于 onMenuItemSelected,但这个方法确实没有执行到,

一个可能是SDK版本问题,机子上的2.2,难道3.0才支持?求解答

  • 大小: 50.3 KB
分享到:
评论

相关推荐

    Android插件

    针对上面的两种情况,如果view比较少还好说,如果有几十个view,那么我们一个个的手动删除注解,写findviewbyid语句,简直是一场噩梦(别问我为什么知道这是噩梦) 所以,这种有规律又重复简单的工作为什么不能用一...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    Android实训实习报告总结.docx

    的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等 Android实训实习报告总结全文共13页,当前为第2页。 Android实训实习报告总结全文共13页,当前为第2页。 学习中...

    Ergonomic-Menu-HCI-Study:为测试不同菜单布局的有效性而构建的应用程序

    为测试不同菜单布局的有效性而构建的应用程序 ##About 此应用程序专为人机交互研究而设计。 它为用户提供了多种菜单布局,希望能更好地了解哪种布局更有效。 随着手机尺寸的增加,用一只手导航菜单可能是一项有问题...

    beagle:一个智能,可靠且高度可定制的调试菜单库,用于Android应用程序,支持屏幕记录,网络活动日志记录和许多其他有用的功能

    介绍了使用库可以实现的另一种方法, 介绍了使用Beagle可以解决的各种问题。在您的项目中使用如果下面的文字太长,无法满足您的口味,请查看,其中包含进行良好配置所需的所有代码。 否则,请逐步进行操作:步骤0:...

    IONIC 功能全演示

    - 另外一种方式,在webstorm里对index.html 按debug运行,同样是“所见即所得”的方式开发 ### CROS支持 - 生产环境的 CROS支持要么使用jsonp技术,要么在服务端设置代理。 - 而开发环境下要么 基于不安全做法,...

    piranti-bergerak:移动设备软件开发课程

    Piranti Bergerak-菜单应用概述和应用生命周期Menu App是一个简单的Android应用程序,可以数字化您的餐厅菜单,并允许用户轻松选择菜单。 此应用程序由2个活动(“主菜单”和“选择菜单”)和2个片段(“食物和饮料...

    rn-boilerplate:这是一个使用 v0.63.4 的 React Native 样板

    rn-样板 关于 ...rn-boilerplate 为两个平台提供了 2 种构建风格 安卓 分期 调试yarn android-staging 发布yarn android-staging-release 生产 调试yarn android-production 发布yarn android-prod

    OPhone平台2D游戏引擎实现——物理引擎

    Canvas和Opengl ES,因此我们可以任选其中一种,这里为了配合我们的引擎实现,选择通过Opengl ES来作为渲染部分,这部分就需要我们自己来实现,其实我们也可以不使用其图像渲染部分,因为我们主要是使用Box2d来做...

Global site tag (gtag.js) - Google Analytics