Android: заставить кнопку «Назад» переключаться между вкладками (панель навигации по вкладкам)?

Я разрабатываю приложение для Android. У меня есть панель действий в режиме навигации по вкладкам и три вкладки, которые вызывают фрагменты для замены в контейнере фреймов.

Моя проблема: если пользователь создает стопку на одной вкладке, а затем переключается на другую вкладку, если в этом состоянии нажата кнопка «Назад», то стопка всплывает, но вкладка не меняется, что приводит к перекрывающимся фрагментам (фрагмент backstack, принадлежащий Tab1, извлекается/добавляется, но Tab2 по-прежнему выделен, как и его фрагмент).

Есть ли способ заставить вкладки панели действий реагировать на кнопку «Назад» таким образом, чтобы это было параллельно стеку фрагментов?


person LoneDuck    schedule 01.10.2012    source источник


Ответы (3)


Я решил это, добавив вкладки в задний стек с именами (addBackStack("MainTab");), которые я выбрал в TabListener, а затем переопределил метод onBackPressed() в действии, чтобы распознать, когда вкладка будет меняться при извлечении заднего стека (путем получения верхнего имя BackStackEntry) и соответственно использовал actionBar.setSelectedNavigationItem(position).

person LoneDuck    schedule 02.10.2012
comment
Я решил это. Кому интересно: FragmentManager.BackStackEntry bE = getFragmentManager().getBackStackEntryAt(getFragmentManager().getBackStackEntryCount() - 1); String nameOfTopBackEntry = bE.getName(); // NAME, you provided with addToBackStack(NAME); - person Tim; 23.02.2013

Вместо использования addToBackStack() переопределите метод onBackPressed() в своей деятельности, чтобы настроить поведение клавиши «Назад».

person Vinay S Shenoy    schedule 01.10.2012

Это работает для меня :)

@Override
public void onBackPressed() {
    if (viewPager.getCurrentItem() == 0) {
        super.onBackPressed();
    }else {
        viewPager.setCurrentItem(0);
    }
}
person ASAD HAMEED    schedule 17.08.2019