通过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
分享到:
相关推荐
针对上面的两种情况,如果view比较少还好说,如果有几十个view,那么我们一个个的手动删除注解,写findviewbyid语句,简直是一场噩梦(别问我为什么知道这是噩梦) 所以,这种有规律又重复简单的工作为什么不能用一...
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等 Android实训实习报告总结全文共13页,当前为第2页。 Android实训实习报告总结全文共13页,当前为第2页。 学习中...
为测试不同菜单布局的有效性而构建的应用程序 ##About 此应用程序专为人机交互研究而设计。 它为用户提供了多种菜单布局,希望能更好地了解哪种布局更有效。 随着手机尺寸的增加,用一只手导航菜单可能是一项有问题...
介绍了使用库可以实现的另一种方法, 介绍了使用Beagle可以解决的各种问题。在您的项目中使用如果下面的文字太长,无法满足您的口味,请查看,其中包含进行良好配置所需的所有代码。 否则,请逐步进行操作:步骤0:...
- 另外一种方式,在webstorm里对index.html 按debug运行,同样是“所见即所得”的方式开发 ### CROS支持 - 生产环境的 CROS支持要么使用jsonp技术,要么在服务端设置代理。 - 而开发环境下要么 基于不安全做法,...
Piranti Bergerak-菜单应用概述和应用生命周期Menu App是一个简单的Android应用程序,可以数字化您的餐厅菜单,并允许用户轻松选择菜单。 此应用程序由2个活动(“主菜单”和“选择菜单”)和2个片段(“食物和饮料...
rn-样板 关于 ...rn-boilerplate 为两个平台提供了 2 种构建风格 安卓 分期 调试yarn android-staging 发布yarn android-staging-release 生产 调试yarn android-production 发布yarn android-prod
Canvas和Opengl ES,因此我们可以任选其中一种,这里为了配合我们的引擎实现,选择通过Opengl ES来作为渲染部分,这部分就需要我们自己来实现,其实我们也可以不使用其图像渲染部分,因为我们主要是使用Box2d来做...