易采站长站为您分析Android中用onSaveInstanceState保存Fragment状态的方法,onSaveInstanceState可以将数据保存在Fragment或Activity中,需要的朋友可以参考下
在Fragment里面,利用onSaveInstanceState保存数据,并可在onActivityCreated里面恢复数据。
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
if (savedInstanceState != null) {
// Restore the fragment's state here
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save the fragment's state here
}
在Activity里面,利用onSaveInstanceState保存Fragment实例的数据,并可在onCreate里面恢复数据:
private Fragment myFragment;
public void onCreate(Bundle savedInstanceState) {
...
if (savedInstanceState == null) {
// Instantiate fragment
} else {
// Restore the fragment's instance
myFragment = getSupportFragmentManager().getFragment(
savedInstanceState, "fragment");
}
...
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Save the fragment's instance
// fragment instance may be null
if (myFragment != null) {
getSupportFragmentManager().putFragment(outState, "fragment", myFragment);
}
}
实例
首先看一个步骤,如果是人为关闭Activity或者Fragment, 比如点击了后退键,主动关闭当前页面,就会走 onPause() --> onStop() --> onDestroy() 而onSaveInstanceState() 并不会被调用. onSaveInstanceState() 只有在系统即将要自动清理销毁Activity或Fragment前才会调用, 比如
1, 由于重力感应 手机从竖屏变为横屏,
2, 手机点击Home键和长按Home键
3, 点击电源键锁屏时
4, 从当前Activity跳到另一个Activity










