添加addToBackStack()函数

时间:2013-09-27 20:39:16

标签: android back-stack

我正在使用OnClickListener来进行片段替换。我也在OnClickListener中将3个LinearLayouts切换为'GONE'。

我想在按下后退按钮时添加一个功能,将3个LinearLayouts设置回VISIBLE。片段交换回来,但LinearLayouts不会改变它们的状态。

感谢任何帮助,谢谢!

final OnClickListener swapFragments = new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (myAdapter.isEmpty() != true) {
            FragmentTransaction ft = getFragmentManager()
                    .beginTransaction();

            FragmentTwoTop ftt = new FragmentTwoTop();
            FragmentTwoBottom ftb = new FragmentTwoBottom();

            ft.replace(R.id.leftTopHolder, ftt, "fragmenttwotop");
            ft.replace(R.id.leftBottomtHolder, ftb, "fragmenttwobottom");

            layoutOne.setVisibility(View.GONE);
            layoutTwo.setVisibility(View.GONE);
            layoutThree.setVisibility(View.GONE);

            ft.addToBackStack("swapfragments");

            ft.commit();

        } else {

        }
    }
};

1 个答案:

答案 0 :(得分:0)

您可以尝试在backstack中添加一个监听器:http://developer.android.com/reference/android/app/FragmentManager.html#addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener)

只要在后台堆叠中添加或删除“某物”,就会调用它。

然后,您可以检查片段类的类型(或者您在类中保存当前片段 - 您的Activity - 变量)以确定是否需要执行动画。

管理布局的方法只需检查可见性(getVisibility),如果是VISIBLE,则设置为GONE,如果GONE设置为VISIBLE {1}}。