Android 默认情况下是否使用savedInstanceState保存片段?
我继续读下去 onsaveinstancestate为您提供应用程序先前状态的捆绑(如果屏幕方向发生更改) 我查看了Android docs(),发现必须手动将要保存为键值对的值放入其中Android 默认情况下是否使用savedInstanceState保存片段?,android,facebook,android-fragments,Android,Facebook,Android Fragments,我继续读下去 onsaveinstancestate为您提供应用程序先前状态的捆绑(如果屏幕方向发生更改) 我查看了Android docs(),发现必须手动将要保存为键值对的值放入其中 static final String STATE_SCORE = "playerScore"; static final String STATE_LEVEL = "playerLevel"; ... @Override public void onSaveInstanceState(Bundle
static final String STATE_SCORE = "playerScore";
static final String STATE_LEVEL = "playerLevel";
...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
我的问题是,对于片段,它们是否会在方向更改和活动重新创建时自动重新连接?您是否需要将代码保存到捆绑包中?
下面是我试图理解的facebook代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// Add the fragment on initial activity setup
mainFragment = new MainFragment();
getSupportFragmentManager()
.beginTransaction()
.add(android.R.id.content, mainFragment)
.commit();
} else {
// Or set the fragment from restored state info
mainFragment = (MainFragment) getSupportFragmentManager()
.findFragmentById(android.R.id.content);
}
}要在活动被销毁时保留片段,以便它自动重新访问,您应该调用
Fragment.setRetainInstance(true)
在片段的构造函数中。
默认情况下,
onSaveInstanceState()
中没有保存任何内容,因此默认情况下不会保留它们?我也是这么想的。构造函数是什么意思?你是指oncreate生命周期方法吗?不,我是指片段的构造函数。如果你设置了retainInstance(true)在它中,活动被销毁,片段不会被销毁。在片段中根本没有提到这一点。你知道为什么吗?我不知道,但你可以参考这里