2012-10-22 31 views
3

我已經在片段類中使用了多個選項卡。我在保存片段狀態方面失敗了。我使用方法onSaveInstanceState()並在其中保存一個參數。但是當我回到這個片段時,保存的狀態總是顯示「null」。我嘗試了所有關於此的問題和答案。即使我面臨同樣的問題。請任何人都可以幫助我解決這個問題。Android片段狀態在onCreateView方法和onActivityCreated方法中始終爲空

MY CODE

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
    super.onCreate(savedInstanceState); 
    Log.d("savedInstanceStateInfo1", "" + savedInstanceState); 
    if (null != savedInstanceState) { 
    nAndroids = savedInstanceState.getInt("nAndroids"); 
    Log.d("NANDROIDS", "" + nAndroids); 
    } 
    } 
    // Log.d("State in oncreate : ",""+savedInstanceState); 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    setRetainInstance(true); 
    Log.d("SavedinstanestateInfo", "" + savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    if (container == null) { 
    return null; 
    } 
    // final ActionBar ab=getActivity().getSupportActionBar(); 

    View v = (LinearLayout) inflater.inflate(R.layout.infotab, container, false); 
    Log.d("SavedinstanestateInfo", "" + savedInstanceState); 
    return v; 
} 
@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putInt("nAndroids", nAndroids); 

    super.onSaveInstanceState(outState); 
} 
+0

你是否檢查了onSaveInstanceState被調用? –

+0

是的,我已檢查,我已經存儲了一個整數值,但它顯示nullcreateview方法返回到片段時返回空值 –

回答

5

1)顯然使用setRetainInstance(真)時,束爲onRestoreInstanceState爲空。

https://stackoverflow.com/a/8488107/1011746

2)不是必須的,但更習慣上進行任何修改outState之前調用super.onSaveInstanceState(outState)。與onRestoreInstanceState(Bundle outState)中的super.onRestoreInstanceState(outState)相同。

相關問題