在活动中使用menu

来源:互联网 发布:数据魔方公司 编辑:程序博客网 时间:2024/05/01 12:46

1.在res目录下创建menu文件夹,在menu下创建main.xml;

2.在main.xml中加入代码:

 <span style="white-space:pre"></span><item        <span style="white-space:pre"></span>android:id="@+id/add_item"        <span style="white-space:pre"></span>android:title="Add"/>   <span style="white-space:pre"></span><item         <span style="white-space:pre"></span>android:id="@+id/remove_item"        <span style="white-space:pre"></span>android:title="Remove"/>
其中,<item>标签用来创建某一个菜单项,android:id给此菜单指定标识符,android:title给此菜单指定一个名称。

3.重写onCreateOptionsMenu()方法

public boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.main, menu);return true;}


    其中,getMenuInflater()方法可以得到Menuflater对象,调用它的inflate()方法为当前活动创建菜单。inflate()方法的原形为void inflate(int menuRes,Menu menu);第一个参数为创建菜单的资源R.menu.main,第二个参数制定创建的菜单加入到哪个Menu对象当中,这里使用onCreateOptinosMenu方法传入的menu参数。返回true表示菜单显示出来,false则不显示


4.为菜单定义响应事件,重写onOptionsItemSelected()方法。

public boolean onOptinosItemSelected(MenuItem item){switch(item.getItemId()){case R.id.add_item:Toast.makeText(FirstActivity.this, "You clicked add", Toast.LENGTH_SHORT).show();break;case R.id.remove_item:Toast.makeText(FirstActivity.this, "You clicked remove", Toast.LENGTH_SHORT).show();break;default:}return super.onOptionsItemSelected(item);}

在onOptionsItemSelected()方法中调用item.getItemId()方法来判断点击的是哪一个菜单,然后给每个点击的菜单项加入toast处理


完成上述工作后发现,虽然点击Menu能够显示出菜单,但是点击具体的某一个菜单后并不能弹出toast,可能是菜单没有注册?在以后的学习中注意找到解决问题!!


0 0