在我的应用程序中我有一个导航抽屉.HomeActivity持有导航抽屉。在HomeActivity我调用一个片段说AI希望这个片段保留在backstack中。然后当用户从导航菜单中选择任何其他选项时不应该记录在backstack.But我的代码它仍然在后台。请帮助我
代码
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);