1

Je travaille sur une application qui n'utilise qu'une seule activité et permute les fragments au fur et à mesure des besoins avec le tiroir de navigation. Maintenant, nous voulons revenir en arrière à partir de l'un de ces fragments en utilisant le bouton homeAsUp dans la barre ActionBar.Android ActoinBar homeAsUp ne fonctionne qu'une seule fois

J'ai suivi toutes les étapes pour mettre le bouton en place. De désactiver le tiroir de navigation setDrawerIndicatorEnabled(false) et en appelant setDisplayHomeAsUpEnabled(true) dans le fragment onCreateView(). J'ai également mis setHomeButtonEnabled(true) dans le onCreate() MainActivity mais comme l'application est déjà dans MainActivity, nous ne pouvons pas spécifier une activité parente.

Chaque fois que je lance une nouvelle installation de l'application, le bouton homeAsUp fonctionne et est enregistré dans la méthode onBackPressed(), et non onOptionsItemSelected(). Cependant, lorsque je ferme l'application et que je la relance, le bouton n'enregistre même pas les clics.

Dans onBackPressed() Je vérifie quelques conditions, mais ne bloque pas la pression sur le bouton. Dans onOptionsItemSelected() Je vérifie pour android.R.id.home.

Malheureusement, je ne peux pas poster le code.

Ce message décrit ce que je suis en train de réaliser: Switching between Android Navigation Drawer image and Up caret when using fragments

Répondre

0

j'ai réussi à résoudre le problème que je ressentais. C'était une erreur très simple. Parce que je ne suis pas l'auteur original de ce code, j'ai passé en revue la MainActivity à fond. Comme il se trouve que l'auteur d'origine a appelé setDisplayHomeAsUpEnabled dans la fonction onCreate (qui est extrêmement long), mais près de la fin, il a également appelé setSupportActionBar, qui a fait le premier appel de setDisplayHomeAsUpEnabled inutile. Déplacement setDisplayHomeAsUpEnabled ci-dessous setSupportActionBar résolu mon problème.

Si vous avez tout fait correctement, assurez-vous que votre code est écrit dans le bon ordre.

En outre, si vous utilisez des barres d'outils personnalisées dans d'autres fragments, n'oubliez pas de définir votre barre d'action de support d'origine en appelant setSupportActionBar(toolbar.find(this)) dans onResume de votre MainActivity.