【发布时间】:2015-04-13 13:48:26
【问题描述】:
我有几个片段。它们使用滑入式动画进行过渡。 MainFragment-> Fragment2 -> Fragment3。
1) 我想在用户到达 MainFragment 时清除 backstack,只留下堆栈中的那个片段。
2) 在某些情况下,我想删除堆栈中的前一项。当用户按下返回按钮并从 fragment3 = > fragment2 移动时说。
我在下面展示了我的代码。如果我使用该方法,片段过渡动画就会变得混乱。我不确定如何实现第二个要求。
另一个问题是,当我从 backstack 中删除片段时,它们会被丢弃吗?
private void replace(Fragment fragment )
{
if(fragment == null) return;
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.fragment_enter,
R.anim.fragment_exit);
fragmentTransaction.replace(R.id.fragment, fragment);
fragmentTransaction.addToBackStack(fragment.toString());
fragmentTransaction.commit();
if(fragment instanceof MainFragment)
clearBackStack();
}
public void clearBackStack() {
if (fragmentManager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = fragmentManager.getBackStackEntryAt(0);
fragmentManager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
【问题讨论】: