2016-01-18 117 views
2

嗨iam試圖保存片段的狀態,當一個片段被替換爲其他片段。 考慮我的活動我有一個片段Atextview-1textview-2。當我點擊textview-1時,我將替換爲帶有列表視圖的fragmentB的fragmentA。 現在,當我點擊fragmentB列表項iam獲取列表值並更新textview-1。 iam爲textview-2做的同樣的事情,但是當我返回時,textview-1值消失了。如何保存片段A的狀態及其textview-1值。Android:保存片段狀態並恢復視圖值

嘗試如下

@Override 
public void onSaveInstanceState(Bundle outState) { 
    // TODO Auto-generated method stub 
    super.onSaveInstanceState(outState); 
    outState.putString("curChoice", strtext); 
} 

和OnActivityCreated()

if (savedInstanceState != null) { 
      // Restore last state for checked position. 
      strtext = savedInstanceState.getString("curChoice", ""); 
      //incrementdata(strtext); 
     } 

但總是savedInstanceState是給空。

+0

將值保存在'cache'或'sharedpref'中,並在需要時檢索它。 – Tauqir

+0

你可以嘗試在onCreateView()中拯救你的** savedInstanceState ** –

+0

@ hari86:檢查這個鏈接http://developer.android.com/intl/ru/guide/components/fragments.html#CommunicatingWithActivity – kevz

回答

-1

當任何碎片被系統破壞時,所有事情都會發生與活動完全相同的情況。這意味着每個單獨的成員變量也會被碎片破壞。您必須分別通過onSaveInstanceStateonActivityCreated方法手動保存和恢復這些變量。

片段內沒有onRestoreInstanceState方法。 所以你需要像下面的代碼那樣做。

// These variable are destroyed along with Activity 
private String var1,var2; 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt("VAR1", var1); 
    outState.putString("VAR2", var2); 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    var1 = savedInstanceState.getInt("VAR1"); 
    var2 = savedInstanceState.getString("VAR2"); 
} 

基本上每個單獨的標準窗口小部件如EditTextTextViewCheckbox等被所有已經在內部實現的那些東西。您可能需要爲某個View啓用它,例如,您必須將android:freezeText設置爲true,TextView才能使用該功能。

+0

嘿Thas我在做什麼,請檢查我的問題。 – hari86