Сообщение об ошибке:
java .lang.IllegalStateException: невозможно выполнить это действие после onSaveInstanceState в android .support.v4.app.FragmentManagerImpl.checkStateLoss (FragmentManager. java: 2080) в android .support.v4.app.FragmentManagerImpl.popBackStackImmediate (FragmentManager. java: 837)
/**
* replace current fragment with another
*
* @param currentFragment current fragment for replace
* @param newFragment new fragment to add
* @param tag name of the fragment
* @param layoutId container layout for place fragment
*/
public static void showFragment(Fragment currentFragment, Fragment newFragment, String tag, int layoutId) {
FragmentManager fragmentManager = currentFragment.getActivity().getSupportFragmentManager();
// check if the fragment is in back stack
boolean fragmentPopped = fragmentManager.popBackStackImmediate(tag, 0);
if (fragmentPopped) {
// fragment is pop from backStack
} else {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(layoutId, newFragment, tag);
fragmentTransaction.addToBackStack(tag);
fragmentTransaction.commitAllowingStateLoss();
}
}
Я также изменил кодgmentTransaction.commit (); фрагментировать транзакцию.commitAllowingStateLoss (); и произошла та же ошибка.
код, используемый для вызова вышеуказанной транзакции фрагмента,
FragmentUtils.showFragment(CustomersFragment.this
, new StoreFragment()
, "CustomersFragment"
, R.id.fragmentHolderFrmLyt);