簡體   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