在“安卓编程学习第四天”中,通过setOnClickListener()方法设置按键的OnClickListener()接口,并且重载该接口的onClick()方法实现对按键的响应。今天将实现点击菜单项的响应。在“安卓编程学习第三天”中已经学习了菜单的相关知识。其中,菜单对应的文件“res->menu->main.xml”,在“MainActivity.java”文件中类MainActivity中重载onCreateOptionsMenu()实现菜单的载入。
1 菜单项的添加
通过修改“res->menu->main.xml”文件可以实现对菜单项的编辑。鼠标左键双击“res->menu->main.xml”,在右侧的main.xml中添加如下代码:
<item
android:id="@+id/add_item"
android:title="添加"
/>
<item
android:id="@+id/remove_item"
android:title="删除"
/>
以上代码的作用是在菜单中添加两个项,分别是“添加”和“删除”,其ID分别是add_item和remove_item,如图1-1所示。
图1-1 菜单项的添加
2 菜单项的响应
当菜单项被选择时,onOptionsItemSelected()方法将会被调用。因此,自定义该方法可以实现菜单项的响应。
双击“src->com.exaple.hello_world->MainActivity.java”,在右侧的MainActivity.java的MainActivity类定义中自定义onOptionsItemSelected()方法,该方法的格式是
public boolean onOptionsItemSelected(MenuItem item)
其中,参数item是MenuItem接口的对象,该接口可以用来直接访问创建的菜单项。
今天要实现的功能是当点击菜单中的“添加”选项,则在TextView控件中实现“你选择了添加菜单”;当点击“删除”选项,则在TextView控件中实现“你选择了删除菜单”。
要为不同的菜单项添加不同的响应,首先要知道哪一个菜单项被选中了。可以通过选中菜单项的ID来判断菜单中的哪一项被选中。菜单项ID的获取可以通过MenuItem接口中的getItemId()方法获取被选中项的ID。
1 switch(item.getItemId()){
2 case R.id.add_item:
3 myTextView.setText("你点击了添加选项");
4 break;
5 case R.id.remove_item:
6 myTextView.setText("你点击了删除选项");
7 break;
8 default:
9 break;
10 }
其中,第1行的item是MenuItem接口的对象,也就是onOptionsItemSelected()方法的参数,表示被选中的菜单项,第2行和第5行的R.id.add_item和R.id.remove_item是两个菜单项的ID,在1中被定义;第3行和第6行的myTextView是TextView的对象,通过以下代码获得
TextView myTextView =(TextView)findViewById(R.id.textView1);
获得TextView对象的方法在“安卓编程学习第四天”中已经讲解。
在模拟设备中运行程序之后,点击模拟设备面板上的“Menu”菜单,显示新添加的菜单,点击“添加”菜单项,效果如图2-1所示,点击“删除”菜单项,效果如图2-2所示。
图2-1 点击了“添加”菜单
图2-2 点击了“删除”菜单
3 小结
今天学习了安卓程序菜单项的响应。通过编辑“res->menu->main.xml”文件实现菜单项的添加,通过自定义MainActivity类的onOptionsItemSelected()方法实现菜单项的响应。在该方法中通过MenuItem接口的getItemId()方法获取选中菜单项的ID,不同ID进行不同的处理。