万书网 > 文学作品 > Android从入门到精通 > 第89页

第89页





sb.append("联系电话:"+xrp.getAttributeValue(1)+"  ");  //获取联系电话



sb.append("E-mail:"+xrp.getAttributeValue(2));  //获取E-mail



sb.append("\n");  //添加换行符



}



}



xrp.next();  //下一个标记



}



TextView  tv=(TextView)findViewById(R.id.show);  //获取显示文本框



tv.setText(sb.toString());  //将获取到的XML文件的内容显示到文本框中



}  catch  (XmlPullParserException  e)  {



e.printStackTrace();



}  catch  (IOException  e)  {



e.printStackTrace();



}

运行本实例,将从指定的XML文件中获取客户信息并显示,如图8.13所示。



图8.13 从XML文件中读取客户信息





8.9 菜单(menu)资源

教学录像:光盘\TM\lx\8\菜单(menu)资源.exe

在桌面应用程序中,菜单的使用十分广泛。但是在Android应用中,菜单减少了不少。不过Android中提供了两种实现菜单的方法,分别是通过Java代码创建菜单和使用菜单资源文件创建菜单,Android推荐使用菜单资源来定义菜单,下面进行详细介绍。

8.9.1 定义菜单资源文件

菜单资源文件通常放置在res\menu目录下,在创建项目时,默认是不自动创建menu目录的,所以需要手动创建。菜单资源的根元素通常是标记,在该标记中可以包含以下两个子元素。

[√]标记:用于定义菜单项,可以通过如表8.2所示的各属性来为菜单项设置标题等内容。

表8.2 标记的常用属性





属 性  描 述

android:id  用于为菜单项设置ID,也就是唯一标识

android:title  用于为菜单项设置标题

android:alphabeticShortcut  用于为菜单项指定字符快捷键

android:numericShortcut  用于为菜单项指定数字快捷键

android:icon  用于为菜单项指定图标

android:enabled  用于指定该菜单项是否可用

android:checkable  用于指定该菜单项是否可选

android:checked  用于指定该菜单项是否已选中

android:visible  用于指定该菜单项是否可见

说明:  如果某个菜单项中还包括子菜单,可以通过在该菜单项中再包含标记来实现。

[√]标记:用于将多个标记定义的菜单包装成一个菜单组,其说明如表8.3所示。

表8.3 标记的常用属性





属 性  描 述

android:id  用于为菜单组设置ID,也就是唯一标识

android:heckableBehavior  用于指定菜单组内各项菜单项的选择行为,可选值为none(不可选)、all(多选)和single(单选)

android:menuCategory  用于对菜单进行分类,指定菜单的优先级,可选值为container、system、secondary和alternative

android:enabled  用于指定该菜单组中的全部菜单项是否可用

android:visible  用于指定该菜单组中的全部菜单项是否可见

例如,在res\xml目录中,定义一个名称为menus.xml的菜单资源文件,在该菜单资源中,包含3个菜单项和一个包含两个菜单项的菜单组。menus.xml的具体代码如下:







































8.9.2 使用菜单资源

在Android中,定义的菜单资源可以用来创建选项菜单(Option  Menu)和上下文菜单(Content  Menu)。使用菜单资源创建这两种类型的菜单的方法是不同的,下面分别进行介绍。

1.  选项菜单

当用户单击菜单按钮时,弹出的菜单就是选项菜单。使用菜单资源创建选项菜单的具体步骤如下。

(1)重写Activity中的onCreateOptionsMenu()方法。在该方法中,首先创建一个用于解析菜单资源文件的MenuInflater对象,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析后的菜单保存在menu中,关键代码如下:

@Override



public  boolean  onCreateOptionsMenu(Menu  menu)  {



MenuInflater  inflater=new  MenuInflater(this);  //实例化一个MenuInflater对象



inflater.inflate(R.menu.optionmenu,  menu);  //解析菜单文件



return  super.onCreateOptionsMenu(menu);



}

(2)重写onOptionsItemSelected()方法,用于当菜单项被选择时,做出相应的处理。例如,当菜单项被选择时,弹出一个消息提示框显示被选中菜单项的标题,可以使用下面的代码:

@Override



public  boolean  onOptionsItemSelected(MenuItem  item)  {



Toast.makeText(MainActivity.this,  item.getTitle()  ,  Toast.LENGTH_SHORT).show();