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
属 性 描 述
android:id 用于为菜单项设置ID,也就是唯一标识
android:title 用于为菜单项设置标题
android:alphabeticShortcut 用于为菜单项指定字符快捷键
android:numericShortcut 用于为菜单项指定数字快捷键
android:icon 用于为菜单项指定图标
android:enabled 用于指定该菜单项是否可用
android:checkable 用于指定该菜单项是否可选
android:checked 用于指定该菜单项是否已选中
android:visible 用于指定该菜单项是否可见
说明: 如果某个菜单项中还包括子菜单,可以通过在该菜单项中再包含标记来实现。
[√]
表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();