2013-09-27 84 views
0

我正在使用OnClickListener进行片段替换。我也将3个LinearLayouts切换到OnClickListener中的'GONE'。将函数添加到addToBackStack()

我想添加一个函数,当按下后退按钮时,将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 { 

     } 
    } 
}; 

回答

0

你可以尝试添加监听到堆栈中:http://developer.android.com/reference/android/app/FragmentManager.html#addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener)

它将被称为随时“东西”被添加或从/到堆栈中删除。

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

在您所管理的布局可以简单地检查可见性(getVisibility),如果它是VISIBLE然后设置为GONE,如果它是GONE设置为VISIBLE的方法。