没有看到您的代码,我们无法帮助您,但从您的问题中我可以找出问题所在,这个解决方案可能会帮助您。
创建堆栈使得
private static Stack<Fragment> myFragStack;
myFragStack = new Stack<Fragment>();
//加载片段
public void loadFragment(Fragment fragment){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
myFragStack.lastElement().onPause();
ft.hide(myFragStack.lastElement());
myFragStack.push(fragment);
}
//onBackPressed
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (myFragStack.size() > 1) {
ft.remove(myFragStack.pop());
myFragStack.lastElement().onResume();
ft.show(myFragStack.lastElement());
ft.commit();
}
}
这是一个示例代码..您可以根据您的要求进行更改。ft.replace() 将完全删除视图并丢失上下文,因此您无法维护列表状态,但是使用带有 hide-show 的堆栈维护片段将解决您的问题。