Ainsi, mon AppBarConfiguration ressemble à ceci avec des activités de niveau supérieur. Mon «domicile» et mon «contact» fonctionnent très bien. Cependant, ma catégorie prend un paramètre et je peux explorer les sous-catégories, donc seule la première est un niveau supérieur. Donc, bien sûr, le bouton de retour ne s'affichera jamais sur ces écrans avec cette configuration. Comment puis-je "afficher" et "masquer" le bouton de retour par programme pour ceux-ci?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_category, R.id.nav_contact)
.setDrawerLayout(drawer)
.build();
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
bottomNavigationView = findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Bundle bundle = new Bundle();
switch (item.getItemId()) {
case R.id.menu_home:
navController.navigate(R.id.nav_home, bundle);
return true;
......
}
return false;
}
});
}
MISE À JOUR: Voici la fonction que j'ai créée dans MainActivity. Il affiche / masque correctement le bouton de retour, mais il gâche la fonctionnalité du tiroir.
public void updateToolbar(boolean upEnabled) {
if (upEnabled) {
getSupportActionBar().setDisplayShowHomeEnabled(true);
} else {
getSupportActionBar().setHomeAsUpIndicator(null);
}
}
Vous pouvez créer une deuxième destination spécifiquement pour les sous-catégories qui utilisent la même classe Fragment. Cela signifierait que vous seriez à un identifiant de destination distinct et que vous AppBarConfiguation
pourriez distinguer les deux cas.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots