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
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
配置Activity
创建Activity
后,还需要在AndroidManifest.xml
文件中配置该Activity
,具体的配置方法是在<application></application>
标记中添加<activity></activity>
标记实现。<activity>
标记的基本格式如下:
xxxxxxxxxx
<activity
android:icon="@drawable/图标文件名"
android:name="实现类"
android:label="说明性文字"
android:theme="要应用的主题"
…
>
…
</activity>
Activity
启动Activity
xxxxxxxxxx
public void startActivity (Intent intent)
关闭Activity
xxxxxxxxxx
public 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
中。
Fragment
Fragment
要创建一个Fragment
,必须创建一个Fragment
的子类,或者继承自另一个已经存在的Fragment
的子类。例如,要创建一个名称为NewsFragment
,并重写onCreateView()
方法,可以使用下面的代码:
xxxxxxxxxx
public class NewsFragment extends Fragment {
@Override
public 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