使用片段导航时出现问题-Popbackstack

时间:2019-06-17 15:41:58

标签: android android-fragments navigationbar

我一直在尝试修复应用中的导航错误,但是无论尝试如何,我都无法解决。我的意思是,我可以解决它,但它看起来既便宜又便宜。

导航底部栏中有5个主要片段:A,B,C,D,E。

每个项目,转到另一个片段,依此类推。

如果我转到A-> A.1-> A.2-> D,然后按设备上的后退按钮,则A.1将从后堆栈弹出。有没有一种方法可以为每个主要片段设置单独的后置堆栈?

我在这里向您展示每次我从导航底部栏中选择一项时使用的功能:

public static void replaceFragment(@NonNull AppCompatActivity activity, @NonNull Fragment fragment, int resId, boolean addToBackStack) {
    String backStackName = SharedPreferencesManager.getInstance().getBackStackName(activity.getBaseContext());
    FragmentManager manager = activity.getSupportFragmentManager();
    boolean fragmentPopped = manager.popBackStackImmediate(backStackName,0);
    boolean fragmentExists = manager.findFragmentByTag(backStackName) != null;

    FragmentTransaction ft;
    if (!fragmentPopped && !fragmentExists) {
        ft = manager.beginTransaction();
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.replace(resId, fragment, Constants.CURRENT_FRAGMENT_TAG);
        if (addToBackStack) {
            ft.addToBackStack(backStackName);
        }
        ft.commit();
    }
}

先谢谢了。如果还有其他代码需要您显示,请说

0 个答案:

没有答案