好的,这是我的问题,我有三个片段,让我们称之为[1],[2]和[3]。
这是我希望他们遵循的路径:
[1]> [2]> [3]>(后退键)> [1]
出于某种原因,这只能运作一次,当我试图进入第二轮时,会发生以下情况:
[1]> [2]> [3]>(后退键)> [1]> [2]> [3]>(后退键)> [3]>(后退键)>退出
也就是说,当我第二次进入[3]并按下后退按钮时,没有任何反应,如果我再次按下我的应用程序退出到android。 (永远不会回到[1])
我很确定这与addToBackSack方法有关,但我无法完全理解它。
这是我的代码
[A]
public void onClick(View v) {
Fragment fragment = new [B]Fragment();
FragmentManager fm = this.getActivity().getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.addToBackStack(null);
transaction.commit();
break;
}
[B]
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Fragment fragment = new [C]Fragment();
FragmentManager fm = this.getActivity().getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.commit();
}
我没有在[B]上使用addToBackStack,因为我不想让android记住这个事务,我是对的吗?
谢谢!
答案 0 :(得分:1)
确定!找到了答案!
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(this.getActivity(), "New order created",
Toast.LENGTH_SHORT).show();
Fragment fragment = new OrderFragment();
FragmentManager fm = this.getActivity().getFragmentManager();
fm.popBackStack();
FragmentTransaction transaction = fm.beginTransaction();
transaction.addToBackStack(null);
transaction.replace(R.id.container, fragment);
transaction.commit();
}
函数popBackStack()完成了这个伎俩! :)我不确定这是如何工作的。但确实如此!