[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才支持?求解答

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值