241 votes

Comment changer le titre de l'activité dans Android ?

Je suis en train d'utiliser

Window w = getWindow();
w.setTitle("Mon titre");

pour changer le titre de mon activité actuelle mais cela ne semble pas fonctionner.

Est-ce que quelqu'un peut me guider sur la façon de changer cela?

523voto

ploppy Points 489

Essayez setTitle tout seul, comme ceci :

setTitle("Bonjour StackOverflow");

1 votes

SetTitle ne fonctionne pas pour moi, getSupportActionBar() et getActionBar() renvoient également nulls je ne peux pas définir le titre en cours d'exécution.

1 votes

@Ninja_Coding, essayez de l'appeler depuis l'Activité.

1 votes

Ou title = "Bonjour StackOverflow" en Kotlin

255voto

BullShark Points 32

Juste une info, vous pouvez éventuellement le faire à partir du XML.

Dans le fichier AndroidManifest.xml, vous pouvez le définir avec

android:label="Mon titre d'activité"

Ou

android:label="@string/mon_label_activite"

Exemple:

30 votes

Pourquoi voteriez-vous contre cela? C'est bon de savoir que vous pouvez le faire depuis le XML aussi.

8 votes

C'est à peu près la bonne façon de le faire, avec des références à des chaînes externes pour permettre une localisation facile. Devrait être la réponse acceptée.

12 votes

Ce n'est pas la même chose que setTitle(). Définir la propriété android:label de l'activité de lancement changera également le nom de l'application sur l'écran des applications du téléphone. L'icône de votre application affichera la légende "Titre de mon activité".

29voto

hB0 Points 601

Si vous le voulez une seule fois et laissez le système gérer le reste (non dynamique), faites comme ceci dans votre fichier manifeste :

         //C'est le nom de mon titre personnalisé sur l'activité. <- La question concerne celui-ci.
             //C'est le nom de mon titre personnalisé de l'icône (nom du lancement que vous voyez dans les applications/homescreens android)

16voto

Gennady Kozlov Points 981
setTitle(getResources().getText(R.string.MyTitle));

0 votes

@Sujay oui, tu peux, voici le code : try { int labelRes = getPackageManager().getActivityInfo(getComponentName(), 0).labelRes; Logger.d(this.getClass().getSimpleName(), "labelRes : " + labelRes); if (labelRes > 0 && getSupportActionBar() != null) { getSupportActionBar().setTitle(labelRes); } } catch (PackageManager.NameNotFoundException exception) { Logger.d(this.getClass().getSimpleName(), "exception attrapée : " + Log.getStackTraceString(exception)); }

10voto

Defrag Points 166

Il y a un moyen plus rapide, il suffit d'utiliser

YourActivity.setTitle("Nouveau Titre");

Vous pouvez également le trouver à l'intérieur de la méthode onCreate() avec ceci, par exemple:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("Mon Titre");
    }

En passant, ce que vous ne pouvez tout simplement pas faire, c'est appeler setTitle() de manière statique sans passer d'objet Activity.

0 votes

Cela ne fonctionne pas lorsque vous appuyez sur le bouton de veille et rendez l'écran actif à nouveau. Le titre ne se met pas à jour. Des idées ?

0 votes

C'est parce que onCreate() ne sera pas appelé dans votre exemple. Vous devriez envisager d'utiliser un autre gestionnaire d'événements, tel que onResume(). Je vous suggère de voir ce lien: developer.android.com/guide/components/activities/…

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X