Изучая работу с фрагментами, наткнулся на то, что аппаратная кнопка не отменяет действие транзакции.
В разделе
Fragments|Performing Fragment Transactions, официальной документации, говорится, что чтобы отменить действие с фрагментом, его нужно добавить в backStack и закоммитеть транзакцию. Но, почему-то у меня, кнопка назад, закрывает текущую активити. Вот фрагмент кода, где заменяется содержимое основного контейнера.
private void selectPage(int position) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
switch (position) {
case FRAGMENT_A_SHEET:
ft.replace(R.id.fragment_content, new AFragment());
break;
case FRAGMENT_B_SHEET:
ft.replace(R.id.fragment_content, new BFragment());
break;
case FRAGMENT_C_SHEET:
ft.replace(R.id.fragment_content, new CFragment());
break;
case FRAGMENT_D_SHEET:
ft.replace(R.id.fragment_content, new DFragment());
break;
}
ft.addToBackStack(null);
ft.commit();
navigationDrawerLayout.closeDrawer(navigationDrawerList);
}
Или аппаратную кнопку «назад» нужно отдельно отслеживать?