如解釋here您可以使用onSaveInstanceState()將數據保存在Bundle中並在onRestoreInstanceState()方法中檢索該數據。
經常提到setRetainState(true)是爲了讓ui狀態保持片段狀態,但它不適用於您,因爲您正在使用backstack。
所以你一個好辦法可以挽救的onSaveInstanceState在()中的scrollPosition,它在onRestoreInstanceState恢復()這樣的:
public class MyListFragment extends ListFragment {
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
int index = this.getListView().getFirstVisiblePosition();
View v = this.getListView().getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
outState.putInt("index", index);
outState.putInt("top", top);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
[...]
if (savedInstanceState != null) {
// Restore last state for checked position.
index = savedInstanceState.getInt("index", -1);
top = savedInstanceState.getInt("top", 0);
}
if(index!=-1){
this.getListView().setSelectionFromTop(index, top);
}
}
進一步,你可以找到更詳細的similiar例如here。
你看過使用'Bundle'和Overriding'onSavedInstance()'嗎? – BC2
Hi @ dakshbhatt21,你是否爲你的問題得到了解決方案??我有同樣的問題,它一直在困擾着我一個星期沒有突破。 –
hi @mungaihkamau請檢查這篇文章http://developer.android.com/training/implementing-navigation/index.html,你可以找到各種類型的導航時,使用片段,只是檢查出來,讓我知道。 – dakshbhatt21