无需轻拂即可管理片段Backstack流程

Kir*_*tan 10 android android-fragments fragmentmanager fragment-backstack

  1. 我创建了一个AppCompatActivity Opened片段A-> B-> C-> D-> E-> F with replace()
  2. 当我按下按钮时,我在F上包含按钮我要清除碎片到C并想在C顶部打开G所以新的序列将是A-> B-> C-> GI可以用popBackStackImmediate执行此操作(并使用替换功能在C顶部添加G.

问题:当我按下按钮时,我看到C的几分之一秒,然后显示G.To防止这种情况我试图在答案的帮助下停止动画,但即使动画停止,C仍然可见几分之一秒片段.

在更换C顶部的片段时,有没有更好的方法来设计片段流或解决这些电影的方法?

Zee*_*bir 5

我对这个问题非常好奇,我创建了一个示例项目并实现了您在问题中提到的相同用例.这是我如何处理这个.

使用此方法从backstack中删除F,E,D片段

private void removeFragments() {
    getSupportFragmentManager().popBackStack("F", FragmentManager.POP_BACK_STACK_INCLUSIVE);
    getSupportFragmentManager().popBackStack("E", FragmentManager.POP_BACK_STACK_INCLUSIVE);
    getSupportFragmentManager().popBackStack("D", FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
Run Code Online (Sandbox Code Playgroud)

使用此方法替换片段

private void replaceNewFragment(String key) {
    getSupportFragmentManager().beginTransaction().addToBackStack(key)
            .replace(android.R.id.content, AFragment.newInstance(key)).commit();
}
Run Code Online (Sandbox Code Playgroud)

这是一个视频演示视频. 在此输入图像描述

这是github上这个项目的完整版