How to avoid the up button with jetpack navigation and bottom tabs?
up vote
2
down vote
favorite
I would like to have a behavior similar to YouTube:
- have a toolbar and bottom tabs
- going to "Library" (5th tab), the up button doesn't appear
- going inside "My Videos", the up button appears
Here are my constraints:
- use jetpack navigation
- use a
Toolbar
(inside anAppBarLayout
if that matters) - have bottom tabs (
BottomNavigationView
) - all bottom tabs are "top level" in the sense where they don't change the
Toolbar
up button - other application screens are not "top level" and should have an up arrow
- one of the tabs is the navigation graph's default destination
By default, when all is implemented, the navigation is handled automatically by the Jetpack Navigation library. I hook the toolbar with the navigation controller using this helper:
NavigationUI.setupWithNavController(main_toolbar, navController)
This works well, but if I switch one of the bottom tabs, the up button appears and pressing it pops back to the default destination.
This is fine when bottom tabs are not used, but this is awkward when they are.
android android-toolbar bottomnavigationview android-jetpack
add a comment |
up vote
2
down vote
favorite
I would like to have a behavior similar to YouTube:
- have a toolbar and bottom tabs
- going to "Library" (5th tab), the up button doesn't appear
- going inside "My Videos", the up button appears
Here are my constraints:
- use jetpack navigation
- use a
Toolbar
(inside anAppBarLayout
if that matters) - have bottom tabs (
BottomNavigationView
) - all bottom tabs are "top level" in the sense where they don't change the
Toolbar
up button - other application screens are not "top level" and should have an up arrow
- one of the tabs is the navigation graph's default destination
By default, when all is implemented, the navigation is handled automatically by the Jetpack Navigation library. I hook the toolbar with the navigation controller using this helper:
NavigationUI.setupWithNavController(main_toolbar, navController)
This works well, but if I switch one of the bottom tabs, the up button appears and pressing it pops back to the default destination.
This is fine when bottom tabs are not used, but this is awkward when they are.
android android-toolbar bottomnavigationview android-jetpack
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
I would like to have a behavior similar to YouTube:
- have a toolbar and bottom tabs
- going to "Library" (5th tab), the up button doesn't appear
- going inside "My Videos", the up button appears
Here are my constraints:
- use jetpack navigation
- use a
Toolbar
(inside anAppBarLayout
if that matters) - have bottom tabs (
BottomNavigationView
) - all bottom tabs are "top level" in the sense where they don't change the
Toolbar
up button - other application screens are not "top level" and should have an up arrow
- one of the tabs is the navigation graph's default destination
By default, when all is implemented, the navigation is handled automatically by the Jetpack Navigation library. I hook the toolbar with the navigation controller using this helper:
NavigationUI.setupWithNavController(main_toolbar, navController)
This works well, but if I switch one of the bottom tabs, the up button appears and pressing it pops back to the default destination.
This is fine when bottom tabs are not used, but this is awkward when they are.
android android-toolbar bottomnavigationview android-jetpack
I would like to have a behavior similar to YouTube:
- have a toolbar and bottom tabs
- going to "Library" (5th tab), the up button doesn't appear
- going inside "My Videos", the up button appears
Here are my constraints:
- use jetpack navigation
- use a
Toolbar
(inside anAppBarLayout
if that matters) - have bottom tabs (
BottomNavigationView
) - all bottom tabs are "top level" in the sense where they don't change the
Toolbar
up button - other application screens are not "top level" and should have an up arrow
- one of the tabs is the navigation graph's default destination
By default, when all is implemented, the navigation is handled automatically by the Jetpack Navigation library. I hook the toolbar with the navigation controller using this helper:
NavigationUI.setupWithNavController(main_toolbar, navController)
This works well, but if I switch one of the bottom tabs, the up button appears and pressing it pops back to the default destination.
This is fine when bottom tabs are not used, but this is awkward when they are.
android android-toolbar bottomnavigationview android-jetpack
android android-toolbar bottomnavigationview android-jetpack
edited Nov 12 at 5:45
asked Nov 11 at 13:52
Benoit Duffez
5,60195596
5,60195596
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
You can specify AppBarConfiguration
as a third param for NavigationUI.setupWithNavController
. And pass top level destinations to it, like this:
Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration
.Builder(topLevelDestinations)
.build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
More details: AppBarConfiguration
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
You can specify AppBarConfiguration
as a third param for NavigationUI.setupWithNavController
. And pass top level destinations to it, like this:
Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration
.Builder(topLevelDestinations)
.build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
More details: AppBarConfiguration
add a comment |
up vote
3
down vote
accepted
You can specify AppBarConfiguration
as a third param for NavigationUI.setupWithNavController
. And pass top level destinations to it, like this:
Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration
.Builder(topLevelDestinations)
.build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
More details: AppBarConfiguration
add a comment |
up vote
3
down vote
accepted
up vote
3
down vote
accepted
You can specify AppBarConfiguration
as a third param for NavigationUI.setupWithNavController
. And pass top level destinations to it, like this:
Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration
.Builder(topLevelDestinations)
.build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
More details: AppBarConfiguration
You can specify AppBarConfiguration
as a third param for NavigationUI.setupWithNavController
. And pass top level destinations to it, like this:
Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration
.Builder(topLevelDestinations)
.build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
More details: AppBarConfiguration
answered Nov 11 at 17:58
Alexey Denysenko
1,6571719
1,6571719
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249418%2fhow-to-avoid-the-up-button-with-jetpack-navigation-and-bottom-tabs%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown