在我的应用程序中,我有一个导航抽屉。HomeActivity 包含导航抽屉。在 HomeActivity 中,我正在调用一个片段,说 AI 希望这个片段保留在后台堆栈中。然后当用户从导航菜单中选择不应该的任何其他选项时记录到后台堆栈中。但是使用我的代码,它仍保留在后台堆栈中。请帮帮我
代码
public static void replaceFragment(FragmentActivity activity, Fragment fragment, boolean addToBackStack) {
try {
String backStateName = fragment.getClass().getName();
String fragmentTag = backStateName;
FragmentManager manager = activity.getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null) {
FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.frag_container, fragment, fragmentTag);
if (addToBackStack) {
ft.addToBackStack(backStateName);
}
ft.commit();
}
} catch (Exception e) {
e.printStackTrace();
}
}
来自 HomeActivity 的代码以启动片段 A
CommonFunctions.replaceFragment(this, new HomeFrag(), true);
用户从导航抽屉中选择时的代码
CommonFunctions.replaceFragment(this, new ProfileFrag(), false);