Android: comment afficher le bouton de retour pour une activité de haut niveau qui n'est pas non plus une activité de haut niveau?

Primico

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);
    }
}
ianhanniballake

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 AppBarConfiguationpourriez 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.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

chaudétiquette

Archive