通过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函数。

@Overridepublic 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());}@Overridepublic boolean onMenuItemSelected(int featureId, MenuItem item) {// TODO Auto-generated method stubToast.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才支持?求解答

更多相关文章

  1. Android(安卓)API Demos学习 - Service部分
  2. Android(安卓)开发笔记之界面开发
  3. Android(安卓)各层中日志打印功能的应用
  4. Spatialite for Android编译及测试
  5. unity 代码安装Android(安卓)apk
  6. Android中简单调用图片、视频、音频、录音和拍照的方法
  7. android自定义title的方法
  8. Android中定时器的使用(Timer)
  9. android view的setVisibility方法值的意思

随机推荐

  1. Android的 getSystemService
  2. 记录Android开发中遇到的一些问题
  3. Android(安卓)- Android应用程序(Applica
  4. Android简单自定义圆形和水平ProgressBar
  5. [Android(安卓)Memory] Android(安卓)Zip
  6. 【Android】仿UC网络判断效果
  7. Android(安卓)5.1部分apk的升级或缓存功
  8. 《Android开发从零开始》——1.Android开
  9. TextView 图文聊天
  10. 用 SDK Manager.exe 无法更新 Android(安