我有 Activity A 和 B,它们都继承自 BaseActivity 类。Activity A 处理几个片段,并从其中一个片段中启动 Activity B。在 Activiy BI 的 onCreate 方法中调用以下方法:
addFragmentWithAnimation(ExampleFragment.newInstance(), R.anim.custom_slide_in_bottom, 0 , true);
由 Base Activity 类接收:
@Override
public void addFragmentWithAnimation(Fragment fragment, int i, int i1, boolean isInBackStack) {
FragmentManager fManager = getSupportFragmentManager();
fManager.executePendingTransactions();
FragmentTransaction transaction = fManager.beginTransaction();
transaction.setCustomAnimations(i, i1);
transaction.add(R.id.container, fragment);
if (isInBackStack) {
transaction.addToBackStack(fragment.getClass().getCanonicalName());
}
transaction.commit();
}
因此,ExampleFragment 被添加到活动中,并通过底部动画的幻灯片显示。然后 ExampleFragment 对 Example2Fragment 调用相同的方法,但在我将其删除之前,如下所示
@Override
public void closeFragmentWithAnimation(Fragment fragment, int i, boolean isInBackStack) {
FragmentManager fManager = getSupportFragmentManager();
fManager.executePendingTransactions();
FragmentTransaction transaction = fManager.beginTransaction();
transaction.setCustomAnimations(0, i);
transaction.remove(fragment);
if (isInBackStack) {
transaction.addToBackStack(fragment.getClass().getCanonicalName());
}
transaction.commit();
}
通过从 Example2Fragment 调用它。我想强调一下,这两个事务都被添加到了 backstack 到目前为止一切都很好,问题是当我按下 back stack 按钮时。当预期的行为登陆 ExampleFragment 时,它返回到没有片段的空白活动
后面的堆栈到底是如何工作的?我在这里缺少什么?
谢谢