Search code examples
androidandroid-fragmentsandroid-actionbarandroid-fragmentactivity

Android- Make back button switch between tabs (tab navigation actionbar)?


I'm developing an android app. I have an actionbar in tab navigation mode, and three tabs that call fragments to be replaced in the frameview container.

My problem is: if the user generates a backstack while in one tab and then switches to another tab, if the back button is pressed in this state- then the backstack is popped, but the tab doesn't change, which leads to overlapping fragments (backstack fragment which belongs to Tab1 is popped/added, but Tab2 is still selected and so is its fragment).

Is there a way to make actionbar tabs react to the back button in a way that will parallel the fragment backstack?


Solution

  • I solved it by adding the tabs to the backstack with names (addBackStack("MainTab");) which I chose in the TabListener, and then overridden the onBackPressed() method in the activity to recognize when a tab is going to change when the backstack is popped (by getting the top BackStackEntry's name) and used actionBar.setSelectedNavigationItem(position) accordingly.