我可以使用savedInstanceState()
方法在移除一个fragment时保存状态,然后在从返回堆栈中弹出该fragment时恢复状态吗?但是当我从返回堆栈中恢复fragment时,savedInstanceState捆绑对象始终为null。
目前,应用程序流程如下:fragment创建-> fragment删除(添加到返回堆栈)-> 从返回堆栈中恢复fragment(savedInstanceState捆绑对象为null)。
以下是相关代码:
public void onActivityCreated(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);
if (savedInstanceState == null) {
selectedVideoNumber = playlistItemId;
} else {
selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
}
我认为问题在于当被移除并添加到后退栈中时,onSavedInstanceState()
从未被调用。如果我不能使用onSavedInstanceState()
,那还有其他解决方法吗?