我可以用吗savedInstanceState()
删除片段时保存状态,然后从返回堆栈弹出片段时恢复状态?当我从返回堆栈恢复片段时,savedInstanceState 包始终为空。
现在,应用程序流程是:创建片段 -> 删除片段(添加到后台堆栈) -> 从后台堆栈恢复片段(savedInstanceState 包为空)。
这是相关代码:
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()
当被删除并添加到返回堆栈时永远不会被调用。如果我无法使用 onsaveInstanceState(),是否有其他方法可以解决此问题?
(不幸的是)在片段的正常返回堆栈重新创建中不会调用 onSaveInstanceState。查看http://developer.android.com/guide/components/fragments.html#Creating http://developer.android.com/guide/components/fragments.html#Creating和答案添加到返回堆栈时如何维护片段状态? https://stackoverflow.com/questions/11353075/how-can-i-maintain-fragment-state-when-added-to-the-back-stack
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)