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

第69页





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  将数据显示给用户用于编辑