簡體   English   中英

onSaveInstanceState / onRestoreInstanceState和視圖狀態

[英]onSaveInstanceState/onRestoreInstanceState and view state

根據onSaveInstanceState的文檔:

默認實現負責大多數UI每實例狀態

和onRestoreInstanceState:

此方法的默認實現執行先前已凍結的任何視圖狀態的恢復

我不確定那意味着什么。 是否意味着在被殺死后現在恢復后返回時,顯示給用戶的UI屏幕會自動恢復其所有數據? 如果是這樣,我沒有看到。 我得到的只是一個空屏幕,除非我自己設置setContentView。

AM我誤解了意思?

默認實現適用於定義了id的每個小部件。 例如,如果您有一個EditText,並且如果您將提供其id,那么當Activity因為方向而被殺死時系統將保存其值,並且它將在重新創建活動時恢復EditText值。

編輯

如果您有一個基本布局,並且如果要在視圖層次結構中動態添加一些視圖,則必須處理保存狀態並恢復自己的狀態。 當你的活動將被重新創建時,將調用活動的onCreate()方法,因此在此方法中首先設置您正在創建並動態添加的所有添加視圖,然后您可以檢查具有您的意圖的額外參數正在進入onCreate()方法。 這些額外參數與在onSaveInstanceState方法中添加額外參數完全相同。

所以實現如下。

int x = 10;
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("x", x);
}

在onCreate方法中,您可以獲得如下所示的x參數

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.xxx);

    if(savedInstanceState.containsKey("x")) {
        x = savedInstanceState.getInt("x");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM