Я использую библиотеку совместимости Android для реализации фрагментов и расширил образец макета, чтобы фрагмент содержал кнопку, которая запускает другой фрагмент.
В области выбора слева у меня есть 5 выбираемых элементов - A B C D E.
Каждый загружает фрагмент (через FragmentTransaction:replace) в панели сведений - A B C D E
Теперь я расширил фрагмент e, чтобы содержать кнопку, которая загружает еще один фрагмент e1 также в области сведений. Я сделал это по методу фрагмента e onClick следующим образом:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.details_frag, newFrag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Если я сделаю следующие варианты:
E - e - e1 - D - E
Затем фрагмент e находится в панели сведений. Это прекрасно и что я хочу. Однако, если я нажимаю кнопку back в этот момент, он ничего не делает. Я должен дважды щелкнуть его, потому что e1 все еще находится в стеке. Кроме того, после щелчка мыши я получил исключение нулевого указателя в onCreateView:
Чтобы решить эту проблему, я добавил следующее при каждом выборе A B C D E:
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
    fm.popBackStack();
}
Просто интересно, правильно ли это решение или я должен делать что-то другое?
