0

我有 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 时,它返回到没有片段的空白活动

后面的堆栈到底是如何工作的?我在这里缺少什么?

谢谢

4

0 回答 0