我有碎片我保留在FragmentManager的後臺。每一個片段狀態保存與成員變量方位的變化,像這樣的例子:在堆棧中使用onSaveInstanceState和fragment?
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putLong("userId", mUserId);
outState.putString("username", mUsername);
}
我的問題是,如果有一個方向的變化,因爲在堆棧中的每個片段被通過的onSaveInstanceState叫,我得到一個空指針異常,因爲成員變量不再存在。
關於如何解決這個問題的任何想法?
你能提供你的logcat錯誤信息嗎? – 2013-04-08 07:31:31
onSaveInstanceState在應用實際更改之前被調用,所以當您調用它們時,您的變量應該存在,除非它們由於代碼中的其他錯誤而爲空。發佈一些更多的代碼以及Logcat的錯誤輸出形式。 – Shade 2013-04-10 12:09:34
我可以向你保證我的變數是好的。我認爲問題在於,我們在後臺堆棧中的碎片在拆卸時並沒有進入保存狀態狀態, onSaveInstanceState只在活動被銷燬時調用,但我的變量不再存在。所以我目前的解決方案是:「if(mUserId!= null && mUsername!= null)...」。這並不美觀,但它解決了這個問題。如果片段被拆除時沒有調用片段,我覺得有一個片段的onSaveInstanceState方法很奇怪。 – 2013-04-10 16:07:28