我错过了什么还是Fragment
没有onRestoreInstanceState()
方法?如果没有,我该如何获得类似的东西?
问问题
76981 次
5 回答
214
于 2011-03-24T00:28:13.707 回答
50
我知道,您已经接受了答案,但您应该阅读有关 Fragment 的官方文档,上面写着(“处理 Fragment 生命周期”段落):
您可以使用 Bundle 保留片段的状态,以防 Activity 的进程被终止,并且您需要在重新创建 Activity 时恢复片段状态。您可以在片段的 onSaveInstanceState() 回调期间保存状态,并在 onCreate()、onCreateView() 或 onActivityCreated() 期间恢复状态
因此,您可以使用最适合您的:onCreate()
, onCreateView()
, 或onActivityCreated()
于 2014-12-10T14:37:09.233 回答
30
在 Fragments 指南的 ListFragment示例中,您可以找到:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
您可以像这样使用它:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
onActivityCreated()
在片段从堆栈返回后调用。
于 2014-05-07T12:27:29.900 回答
20
onViewStateRestored
ofFragment
等价onRestoreInstanceState
于Activity
。但它被称为 afteronActivityCreated(Bundle)
和 before onStart()
。
于 2016-06-25T07:56:28.817 回答
3
onActivityCreated 已弃用。我发现它只是在片段生命周期方面令人困惑。这样做:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
// 进而:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
savedIInistanceState?.let{
//restore the data here
}
}
于 2020-09-22T09:56:22.200 回答