我一直在尝试修复应用中的导航错误,但是无论尝试如何,我都无法解决。我的意思是,我可以解决它,但它看起来既便宜又便宜。
导航底部栏中有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();
}
}
先谢谢了。如果还有其他代码需要您显示,请说