繁体   English   中英

android 片段 onRestoreInstanceState

[英]android fragment onRestoreInstanceState

我是否遗漏了什么或Fragment没有onRestoreInstanceState()方法? 如果没有,我该如何去获得类似的东西?

片段没有onRestoreInstanceState方法。

您可以在onActivityCreated获得相同的结果,它接收一个带有保存的实例状态(或 null)的包。

此处查看源代码。

我知道,你已经接受了答案,但你应该阅读关于片段官方文档,它说(段落“处理片段生命周期”):

您可以使用 Bundle 保留片段的状态,以防活动的进程被终止,并且您需要在重新创建活动时恢复片段状态。 您可以在片段的 onSaveInstanceState() 回调期间保存状态并在 onCreate()、onCreateView() 或 onActivityCreated() 期间恢复它

因此,您可以使用最适合您的: onCreate()onCreateView()onActivityCreated()

在 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()

onViewStateRestoredFragment是相当于onRestoreInstanceStateActivity 但它在onActivityCreated(Bundle)onStart()之前被onStart()

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
    }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM