0
首先,我已經嘗試了所有可用的解決方案,但我仍然沒有得到這個問題的答案。如何在更換碎片時保存數據
我有一個活動,有幾個片段將填充ViewPager,我填充viewPager的方式是這樣。
fragment = getSupportFragmentManager();
fragment.beginTransaction()
.replace(R.id.homepageVp, newFrag)
.addToBackStack(null)
.commit();
suppouse有片段A和I替換它通過使用以上的代碼片段B,然後在這裏是我的問題,是有可能從片段A移動到片段B並使用上面的代碼移回片段A但仍包含以前替換(第一個)的數據。
我已經使用
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(VAR_KEY, jsonResult);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
jsonResult = savedInstanceState.getString(VAR_KEY);
}
片段A裏面試過了,這是我的理解,是的onSaveInstanceState執行後保存jsonResult變量,這樣當再次執行onActivityCreated創建我的活動,並把以前的值成jsonResult變量。但那不起作用,所以也許我犯了一個錯誤,或者我對碎片生命週期的理解不正確。
爲什麼不創建一個單獨的類來存儲JSON和從任何地方訪問它? –
你試過onCreateView而不是onActivityCreated? – phpdroid