2

Je suis en train d'étendre AppCompatActivity et de définir ActionBar en utilisant setSupportActionBar().setTitle() se comporte différemment à différents moments

Il y a un peu de confusion dans le réglage du titre.

Si je fais -

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar); 
setSupportActionBar(toolbar); 
toolbar.setTitle("Title 1"); // Does not work 
setTitle("Title 2"); // Works 
getSupportActionBar().setTitle("Title 3"); // Works 
setTitle("Title 4"); // Does not work. Why? 

Ce que je vois est que getSupportActionBar().setTitle() crée une nouvelle vue pour le titre et l'activité est en train de perdre la référence. Est-ce le comportement prévu ou un bogue dans Android?

Répondre

1

Si vous appelez setSupportActionBar(Toolbar),, la barre d'actions est alors responsable de la gestion du titre. Vous devez donc appeler le getSupportActionBar().setTitle("My Title"); pour définir un titre personnalisé.

Vérifiez également ce lien où toolbar.setTitle("My title"); peut causer des problèmes comme ci-dessous: - Dans l'application android Toolbar.setTitle méthode n'a aucun effet - nom de l'application est affiché comme titre

Et toolbar est la forme générale de la barre d'action.

Nous pouvons avoir plusieurs barres d'outils en tant que widget de mise en page mais pas l'action.

donc une meilleure approche consiste à utiliser getSupportActionBar().setTitle("My Title");

+1

Vérifiez également ce lien ??? –

+0

Votre réponse ne m'a pas convaincu pourquoi toolbar.setTitle(); ne fonctionne pas dans ce cas .. –

1

copie cette ligne

setSupportActionBar(toolbar); 

ajouter la fin de votre ligne.

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar);  
setSupportActionBar(toolbar); 
toolbar.setTitle("Title 1"); 
setTitle("Title 2"); 
getSupportActionBar().setTitle("Title 3"); 
setTitle("Title 4"); 
setSupportActionBar(toolbar); 
+1

Et puis nous obtenons un NPE à la ligne # 4? ;) – reVerse

+0

vous pouvez utiliser setSupportActionBar(); Deux fois. un avant la ligne # 4 et un à la fin. –

0

Il est un comportement prévu une fois que votre jeu setSupportActionBar(Toolbar). bibliothèque de soutien interne crée une nouvelle vue pour le titre d'affichage.

setTitle() est la méthode de Activity il mettra à jour seulement le titre si utilisé setActionBar(Toolbar). Mais, il n'a pas de compatibilité vers l'arrière.

Ref

AppCompatDelegateImplBase

AppCompatDelegateImplV9

+0

Je comprends cela. Mais si la ligne 4 fonctionne, alors la ligne 6 devrait également fonctionner. – Enigma

+0

@Enigma a mis à jour la réponse s'il vous plaît vérifier –