当手动弹出FragmentManager的后台堆栈时,如何实现反向转换?

时间:2012-09-11 07:57:09

标签: android android-fragments transitions

我正在使用v4兼容性库并切换到这样的新片段:

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
 transaction.replace(R.id.contentFragmentContainer, event.getFragmentClass().newInstance(), FRAGMENT_CONTENT);
 transaction.addToBackStack(fragmentTransactionName);
 transaction.commit();

现在,当我想以编程方式返回前一个片段而不用新片段事务污染用户的后台堆栈时,我使用popBackStackImmediate()

 if (fragmentManager.popBackStackImmediate(fragmentTransactionName, 0)) {
     return;
 }
 // apparently popping back to that fragment was not successful,
 // make a regular transaction now

尽管已经用于动画到其中一个弹出片段的动画不会被反转,但这样可以正常工作。我还尝试事先使用transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE),但这在常规交易发生时甚至没有显示转换,也没有反向显示。

我做错了什么?

1 个答案:

答案 0 :(得分:10)

我说我必须更好地阅读The Fine Manual(TM):

public abstract FragmentTransaction setCustomAnimations
                (int enter, int exit, int popEnter, int popExit)
  

“设置特定的动画资源以针对此事务中进入和退出的片段运行。弹出后退堆栈时,popEnter和popExit动画将专门用于进入/退出操作。”

Source