2011-12-14 52 views
56

我試圖將數據保存在Fragment的onSaveInstanceState()中,但該方法從未被調用過。片段的onSaveInstanceState()永遠不會被調用

有人可以幫忙嗎?

public class MyFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ScrollView content = (ScrollView) inflater.inflate(R.layout.content, container, false); 
     // More stuff 
     return content; 
    } 

    @Override 
    public void onSaveInstanceState(Bundle icicle) { 
     // NEVER CALLED 
     super.onSaveInstanceState(icicle); 
     //More stuff 
    } 

} 
+0

你使用的是操作欄sherlock?我只是檢查一下,以確保我有最新的支持包,並意識到我正在使用操作欄sherlock。我更新到最新的ABS,但我仍然有問題。不知道ABS是否是罪魁禍首? – James 2012-01-05 23:05:39

+1

我只是用正常的支持庫和ActionBarSherlock來試用Mark Murphy的EU4You(https://github.com/commonsguy/cw-android/tree/master/Fragments/EU4You_6)。它調用onSaveInstanceState,並在兩種情況下按照預期將該包傳遞給onActivityCreated。所以,仍然需要確定這個原因。 – James 2012-01-06 00:23:07

回答

67

我終於弄清楚了這個問題,至少在我的情況下。我在我的FragmentActivity中重寫了onSaveInstanceState,但沒有調用super.onSaveInstanceState(Bundle outState)。一旦我加入,Fragment.onSaveInstanceState(Bundle outState)正常工作。

-5

嘗試在onCreate(Bundle savedInstanceState)中調用setRetainInstance(true)

+0

無法正常工作:(。我將使用SharedPreferences ...無論如何 – jul 2011-12-14 11:55:27

+1

謝謝你什麼時候期待`onSaveInstanceState`被調用?也許你只是沒有觸發它。 – Felix 2011-12-14 12:25:19

+0

我希望它離開在返回時保存一些數據的活動是否正確? – jul 2011-12-14 12:43:51

6

要檢查的一件事是確保包含該片段的活動不會阻止通過在AndroidManifest.xml中包含android:configChanges標誌來重新啓動。

4

在某些情況下,你可能會發現它有助於使用片段參數代替savedInstanceStateFurther explanation

相關問題