0%

Activity保存恢复数据

Activity保存恢复数据

有的时候我们在窗口转化的过程中,某些数据是不被保存的,例如在你旋转手的时候一些变量会不被保存,一些控件值不被保存,那该如何去做呢?

控件数据丢失

这个很简单,主要是由于你的控件没有给出相应的控件ID所导致的,我们只需要将我们的控件编辑上我们的ID就好了。

变量数据的丢失

这个也不麻烦,但是需要的是保存我们重要的数据,我觉得用上一些Map集合是很方便的,例如在我们转换屏幕的方向的时候,数据就会重新刷新。
那么如何保存呢?我们可以重写onSaveInstanceState方法
例如:

1
2
3
4
5
6
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("a", a);
super.onSaveInstanceState(outState);
}

这个时候我是保存了a变量,保存在”a”这个键值下面。
那么如何回复呢?其实有两种方法,一种是onCreate方法中进行恢复,一种是onRestoreInstanceState方法中进行恢复,两种方法都是可以的,但是这种情况下我们一般建议使用onRestoreInstanceState这个方法,其实是一样的,在我们这个方法被Java虚拟机调用的时候我们会传进来一个Bundle类型的一个参数,这个东西就有点像集合,也是键对值的一个操作,具体操作如下:

1
2
3
4
5
6
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
a = savedInstanceState.getString("a");
super.onRestoreInstanceState(savedInstanceState);
}

onCreate方法中也有那个Bundle参数,使用方法一样的。
记录一下这个Toast类,就是在窗口上提示一个小窗口:
Toast.makeText(getApplicationContext(),a+"",Toast.LENGTH_SHORT).show();

很方便的一个小东西,但是就是太快了是不行的!