第五个项目——计数器2
实验目的
掌握AndroidManifest.xml配置清单文件的结构;
掌握使用Intent显式启动Activity的方式;
掌握如何为Activity添加返回父Activity的方法;
实验要求
能通过Intent对象向Activity传递数据;
实验内容
步骤一,打开名为Code02的Android工程
编译、部署该App,运行时点击COUNT按钮后,TextView文本控件的计数发生变化。此时点击AVD虚拟机 的Rotate按钮,TextView的计数将清零。导致该问题的原因是设备屏幕发生旋转时会导致Android系统的配置 发生改变,从而引起当前的Activity被销毁后重新被创建,详细描述见Activity的生命周期。
Activity被创建时,加载activity_ main.xml创建布局,在该布局文件中,我们对TextView设置了文本的初始值为0。 因此,每当设备屏幕发生旋转时,TextView的计数值都被清零。解决该问题的方法是每次Activity销毁时保存计数值,Activity被重新 创建时在将保存的计数值设置为TextView显示的文本。
步骤二,保存计数值
Activity被销毁时,可在onSaveInstanceState()方法中保存计数值。Activity被重新创建时,可在 onCreate()方法或onRestoreInstanceState()方法中恢复TextView显示的计数值。
如下代码所示,onSaveInstanceState()方法传递一个Bundle对象,该对象以键值对形式 保存Activity的状态信息(包括布局状态),待Activity被重新创建时,Android运行时将该Bundle对象传递给onCreate()方法或onRestoreInstanceState()方法。 通过Bundle对象的putInt()可以保存int型的数值。
步骤三,读取计数值
当Activity被重新创建时,之前保存的Bundle对象将被传递给onCreate()方法或onRestoreInstanceState()方法。 这两个方法中使用Bundle参数有所区别,前者需要判断传递进入的Bundle参数是否为null,而后者不需要判断。
我们选择在onRestoreInstanceState()方法中恢复计数值,使用Bundle对象的getInt()方法可获取之前保存的计数器的值,代码如下所示。
步骤四,重新编译工程并查看运行结果
重新编译、部署App后,点击AVD虚拟机的Rotate按钮,查看TextView的计数值是否有改变。
实验小结
通过本次实验,你应该掌握了如下知识内容:
Activity生命周期的各状态;
使用AVD虚拟机的Rotate按钮旋转设备屏幕;
使用onSaveInstanceState方法保存Activity状态;
使用onRestoreInstanceState方法恢复Activity状态;
Last updated
Was this helpful?