基于Java语言的安卓编程学习之五 Menu的响应

时间:2021-12-29 22:42:38

在“安卓编程学习第四天”中,通过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所示。

基于Java语言的安卓编程学习之五 Menu的响应

图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所示。

基于Java语言的安卓编程学习之五 Menu的响应

图2-1 点击了“添加”菜单

基于Java语言的安卓编程学习之五 Menu的响应

图2-2 点击了“删除”菜单

3 小结

今天学习了安卓程序菜单项的响应。通过编辑“res->menu->main.xml”文件实现菜单项的添加,通过自定义MainActivity类的onOptionsItemSelected()方法实现菜单项的响应。在该方法中通过MenuItem接口的getItemId()方法获取选中菜单项的ID,不同ID进行不同的处理。