PaulTMatik
@PaulTMatik

Почему аппаратная кнопка «назад» не отменяет транзакцию?

Изучая работу с фрагментами, наткнулся на то, что аппаратная кнопка не отменяет действие транзакции.
В разделе 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);
}

Или аппаратную кнопку «назад» нужно отдельно отслеживать?
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@Copperfield
Android dude
Да, вы должны перегрузить метод onBackPressed() и самостоятельно делать pop из backStack
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы