Android片段导航,循环路径

时间:2014-04-24 17:04:21

标签: android android-fragments navigation

好的,这是我的问题,我有三个片段,让我们称之为[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记住这个事务,我是对的吗?

谢谢!

1 个答案:

答案 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()完成了这个伎俩! :)我不确定这是如何工作的。但确实如此!