竹山一叶

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  390 随笔 :: 0 文章 :: 0 评论 :: 0 引用

1、onCreate()方法中最后判断需要保存的状态值

if(savedInstanceState != null){
    mCurrentIndex = savedInstanceState.getInt(KEY_INDEX,0);
}


2、在onCreate()方法后重写onSaveInstanceState(Budle)方法

@Override
public void onSaveInstanceState(Bundle savedInstanceState){
    super.onSaveInstanceState(savedInstanceState);
    Log.i(TAG,"onSaveInstanceState");
    savedInstanceState.putInt(KEY_INDEX,mCurrentIndex);

原理:所有activity的视图将自身的状态数据保存在Budle对象中,这样屏幕旋转就不会丢失反转前的数据。


需要注意的地方:

  • 我们在Bundle中存储和恢复的数据类型只能是基本数据类型(primitive type)以及可以实现Serializable接口的对象。
  • 创建自己的定制类时,如需onSaveInstanceState()方法中保存类对象,需要实现Serializable接口。





posted on 2017-05-24 18:01 竹山一叶 阅读(...) 评论(...) 编辑 收藏