У меня есть действие, которое включает навигацию Bottom, которая открывает 3 отдельных фрагмента:
- Фрагмент А
- Фрагмент Б
- Фрагмент С
Когда Fragment A
открылся, нажатием кнопки я открываю другой фрагмент (фрагмент G), теперь, если я нажму кнопку «Назад», я вернусь к Fragment A
. Но этот фрагмент (A) воссоздан. Я хочу вернуться в то же состояние и не создавать заново фрагмент.
Это мой код в MainActivity
:
private void loadFragment (Fragment fragment){
String backStateName = fragment.getClass().getName();
String fragmentTag = backStateName;
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);
if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null){ //fragment not in back stack, create it.
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.frame_container, fragment, fragmentTag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(backStateName);
ft.commit();
}
}
@Override
public void onBackPressed(){
if (getSupportFragmentManager().getBackStackEntryCount() == 1){
finish();
}
else {
super.onBackPressed();
}
}
и это мой код во Фрагменте А, который открывает Фрагмент G
private void loadFragment() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
Fragment fragment;
fragment = new PdfFragment();
transaction.replace(R.id.frame_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}