int imgId=bundle.getInt("imgId");
ImageView iv=(ImageView)findViewById(R.id.imageView1);
iv.setImageResource(imgId); //设置要显示的图片
Button button=(Button)findViewById(R.id.button1); //获取“返回”按钮
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish(); //返回
}
});
}
}
(6)在AndroidManifest.xml文件中配置用于显示大图片的BigActivity,配置的主要属性有Activity使用的标签和实现类,具体代码如下:
android:name=".BigActivity"
android:label="原图" />
运行本实例,在屏幕上将显示如图5.18所示的图片缩略图,单击任意图片,可以显示该图片的原始图像。例如,单击第2行第3列的图片,将显示如图5.19所示的界面。
图5.18 在第一个Activity上显示图片缩略图 图5.19 在第二个Activity上显示图片原图
5.6 小 结
本章主要介绍了Android应用的重要组成单元——Activity。首先介绍了如何创建、启动和关闭单一的Activity,实际上,在应用Eclipse创建Android项目时,就已经默认创建并配置了一个Activity,如果只需一个Activity,直接使用即可。然后介绍了多个Activity的使用,主要包括如何在两个Activity之间交换数据和如何调用另一个Activity并返回结果。接着介绍了可以合并多个Activity的Fragment,最后列举了两个实用的经典范例,来巩固前面所学的知识。
5.7 实践与练习
1. 编写Android程序,实现根据输入的生日判断星座。(答案位置:光盘\TM\sl\5\5.10)
2. 编写Android程序,实现带选择所在城市的用户注册。(答案位置:光盘\TM\sl\5\5.11)
第6章 Android应用核心Intent
( 教学录像:39分钟)
一个Android程序由多个组件组成,各个组件之间使用Intent进行通信。Intent对象中包含组件名称、动作、数据等内容。根据Intent中的内容,Android系统可以启动需要的组件。
通过阅读本章,您可以:
★ 掌握Intent对象
★ 掌握Intent的使用
6.1 Intent对象
教学录像:光盘\TM\lx\6\Intent对象.exe
即使一个最简单的Android应用程序,也是由多个核心组件构成的。如果用户需要从一个Activity切换到另一个,则必须使用Intent来激活。实际上,Activity、Service和Broadcast Receiver这3种核心组件都需要使用Intent来进行激活。Intent用于相同或者不同应用程序组件间的后期运行时绑定。
对于不同的组件,Android系统提供了不同的Intent发送机制进行激活。
[√]Intent对象可以传递给Context.startActivity()或Activity.startActivityForResult()方法来启动Activity或者让已经存在的Activity去做其他任务。Intent对象也可以作为Activity.setResult()方法的参数,将信息返回给调用startActivityForResult()方法的Activity。
[√]Intent对象可以传递给Context.startService()方法来初始化Service或者发送新指令到正在运行的Service。类似的,Intent对象可以传递Context.bindService()方法来建立调用组件和目标Service之间的链接。它可以有选择地初始化没有运行的服务。
[√]Intent对象可以传递给Context.sendBroadcast()、Context.sendOrderedBroadcast()或Context.send- StickyBroadcast()等广播方法,使其被发送给所有感兴趣的BroadcastReceiver。
在各种情况下,Android系统寻找最佳的Activity、Service、BroadcastReceiver来响应Intent,并在必要时进行初始化。在这些消息系统中,并没有重叠。例如,传递给startActivity()方法的Intent仅能发送给Activity,而不会发送给Service或BroadcastReceiver。
在Intent对象中,包含了接收该Intent的组件感兴趣的信息(如执行的操作和操作的数据)以及Android系统感兴趣的信息(如处理该Intent的组件的类别和任何启动目标Activity的说明)。原则上讲,Intent包含组件名称、动作、数据、种类、额外和标记等内容,下面进行介绍。
6.1.1 组件名称(Component Name)
组件名称是指Intent目标组件的名称。它是一个ComponentName对象,由目标组件的完全限定类名(如com.mingrisoft.TestActivity)和组件所在应用程序配置文件中设置的包名(如com.mingrisoft)组合而成。组件名称的包名部分和配置文件中设置的包名不必匹配。
组件名称是可选的。如果设置,Intent对象会被发送给指定类的实例;如果没有设置,Android使用Intent对象中的其他信息决定合适的目标。
组件名称可以使用setComponent()、setClass()或setClassName()方法设置,使用getComponent()方法读取。
6.1.2 动作(Action)
Action是一个字符串,用来表示将要执行的动作。在广播Intent中,Action用来表示已经发生即将报告的动作。在Intent类中,定义了一系列动作常量,其目标组件包括Activity和Broadcast两类。下面分别进行介绍。
1. 标准Activity动作
表6.1中列出了当前Intent类中定义的用于启动Activity的标准动作(通常使用Context.startActivity()方法),其中,最常用的是ACTION_MAIN和ACTION_EDIT。
表6.1 标准Activity动作说明
常 量 说 明
ACTION_MAIN 作为初始的Activity启动,没有数据输入/输出
ACTION_VIEW 将数据显示给用户
ACTION_ATTACH_DATA 用于指示一些数据应该附属于其他地方
ACTION_EDIT 将数据显示给用户用于编辑