2016-01-18 39 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