Android mobile development and application
安徽师范大学-计算机信息学院-2019-2020学年第一学期, 作者(授课教师): 周文
Activity的中文意思是活动。在Android中,Activity代表手机屏幕的一屏,或是平板电脑中的一个窗口。它是Android应用的重要组成单元之一,提供了和用户交互的可视化界面。
在Activity的生命周期中,以下4个重要的状态。
| 状态 | 描述 |
|---|---|
| 活动状态 | 当前Activity位于Activity栈顶,用户可见,并且可以获得焦点 |
| 暂停状态 | 失去了焦点的Activity,仍然可见,但是在内存低的情况下,它不能被系统killed(杀死) |
| 停止状态 | 该Activity被其他Activity所覆盖,不可见,但是它仍然保存所有的状态和信息,不过,当内存低的情况下,它将要被系统killed(杀死) |
| 销毁状态 | 该Activity结束,或Activity所在的Dalvik进程被结束 |
Activity的生命周期及回调方法

创建Activity,大致可以分为以下两个步骤。
创建一个Activity一般是继承android.app包中的Activity类,不过在不同的应用场景下,也可以继承Activity的子类。创建一个继承Activity类的Activity,名称为MainActivity的具体代码如下:
import android.app.Activity;public class MainActivity extends Activity {}
重写需要的回调方法。通常情况下,都需要重写onCreate()方法,并且在该方法中调用setContentView()方法设置要显示的视图。例如,在上一步骤中创建的Activity中,重写onCreate()方法,并且设置要显示的视图的具体代码如下:
xxxxxxxxxx@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}
配置Activity
创建Activity后,还需要在AndroidManifest.xml文件中配置该Activity,具体的配置方法是在<application></application>标记中添加<activity></activity>标记实现。<activity>标记的基本格式如下:
xxxxxxxxxx<activityandroid:icon="@drawable/图标文件名"android:name="实现类"android:label="说明性文字"android:theme="要应用的主题"…>…</activity>
Activity启动Activity
xxxxxxxxxxpublic void startActivity (Intent intent)
关闭Activity
xxxxxxxxxxpublic void finish ()
实现启动和关闭Activity
在创建Android项目,实现创建两个Activity,在第一个Activity中,单击“查看详细内容”按钮,进入到第二个Activity中,在该Activity中,单击“关闭”按钮,关闭当前的Activity,返回到第一个Activity中。

创建Android项目,实现应用对话框主题的关于Activity。

Activity的使用Bundle在Activity之间交换数据Activity中启动另一个Activity时,经常需要传递一些数据过去。这时就可以通过Intent来实现,因为Intent通常被称为是两个Activity之间的信使,通过将要传递的数据保存在Intent中,就可以将其传递到另一个Activity中了。Android中,可以将要保存的数据存放在Bundle对象中,然后通过Intent提供的putExtras()方法将要携带的数据保存到Intent中。下面通过一个具体介绍如何使用Bundle在Activity之间交换数据。Activity并返回结果在Android应用开发时,有时需要在一个Activity中调另一个Activity,当用户在第二个Activity中选择完成后,程序自动返回到第一个Activity中,第一个Activity必须能够获取并显示用户在第二个Activity中选择的结果,或者,在第一个Activity中将一些数据传递到第二个Activity,由于某些原因,又要返回到第一个Activity中,并显示传递的数据。例如,程序中经常出现的“返回上一步”功能。
Intent和Bundle来实现,与在两个Acitivity之间交换数据不同的是,此处需要使用startActivityForResult()方法来启动另一个Activity。实例1:实现根据身高计算标准体重

实例2:带选择头像的用户注册
创建Android项目,实现带选择头像的用户注册页面,打开新的Activity选择头像,并将选择的头像返回到原Activity中。


FragmentFragment要创建一个Fragment,必须创建一个Fragment的子类,或者继承自另一个已经存在的Fragment的子类。例如,要创建一个名称为NewsFragment,并重写onCreateView()方法,可以使用下面的代码:
xxxxxxxxxxpublic class NewsFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// 从布局文件news.xml 加载一个布局文件View v = inflater.inflate(R.layout.news, container, true);return v;}}
Activity中添加Fragment 直接在布局文件中添加Fragment
<fragment></fragment>标记实现。当Activity运行时添加Fragment
Activity运行时,也可以将Fragment添加到Activity的布局中,实现方法是获取一个FragmentTransaction的实例,然后使用add()方法添加一个Fragment,最后为了使改变生效,还必须调用commit()方法提交事务。在Activity中添加Fragment
Fragment比较强大的功能之一就是可以合并两个Activity,从而让这两个Activity在一个屏幕上显示,例如下图所示(参照Android官方文档),左边的两个图分别代表两个Activity,右边的这个图表示包括两个Fragment的Activity,其中第一个Fragment的内容是Activity A,第二个Fragment的内容是Activity B。
本章结束
2019-9-1