2 显示菜单
在程序的主活动中显示选项菜单,需要重写MainActivity类的onCreateOptionsMenu()方法,其代码如图8所示。

图8 重写onCreateOptionsMenu()方法
2.1 onCreateOptionsMenu()方法
图8①中的onCreateOptionsMenu()方法是MainActivity的父类的方法,该方法的作用是初始化Activity的标准选项菜单。当选项菜单第一次显示时,onCreateOptionsMenu()方法会被调用,之后就不会再被调用了。该方法的参数是Menu类的对象,即创建好的选项菜单。当选项菜单被成功显示后,onCreateOptionsMenu()方法返回true,否则返回false。
2.2 创建MenuInflater类的对象
图8②中通过getMenuInflater()方法获取与程序主活动的上下文相关的MenuInflater类。MenuInflater类用来将菜单XML文件实例化成菜单对象。
2.3 将菜单XML文件实例化成菜单对象
图8③通过MenuInflater类的对象mi,调用inflate()方法将菜单XML文件实例化成菜单对象。该方法的第一个参数XML文件的ID,R.menu.mymenu即为在“1.2 创建菜单文件”中创建的菜单文件;第二个参数转换后的菜单对象,menu是onCreateOptionsMenu()方法的参数,如图8①所示。图8③代码的作用是将菜单ID,R.menu.mymenu实例化成的菜单对象menu。
3 添加选项菜单的响应
重写MainActivity类的onOptionsItemSelected()方法可以实现选项菜单的响应。重写的onOptionsItemSelected()方法如图9所示。

图9 onOptionsItemSelected()方法
3.1 onOptionsItemSelected()方法
只要选项菜单被选中,onOptionsItemSelected()方法就会被调用,图9①。该方法的参数是MenuItem接口的对象。MenuItem接口用来直接访问之前创建的选项菜单的项。如果使用默认的菜单项响应,则onOptionsItemSelected()方法返回false,如果使用自定义的菜单项响应,则返回true。
3.2 判断选中的菜单项
图9②中通过MenuItem接口的对象item,调用getItemId()来获取被选中的菜单项的ID。并且通过switch...case语句,根据不同的菜单项进行不同的处理,图9③、图9④所示,默认情况下调用其父类的onOptionsItemSelected()方法(图9⑤)。

2617

被折叠的 条评论
为什么被折叠?



