Come modificare il titolo dell'attività in Android?


227

sto usando

Window w = getWindow();
w.setTitle("My title");

per cambiare il titolo della mia attività corrente ma non sembra funzionare.

Qualcuno può guidarmi su come cambiare questo?

Risposte:


498

Prova setTitle da solo, in questo modo:

setTitle("Hello StackOverflow");

1
setTitle non funziona per me, getSupportActionBar () e getActionBar () inoltre null non posso impostare il titolo in runtime.
Ninja Coding,

1
@Ninja_Coding, prova a chiamarlo dall'attività.
John Perry,

241

Solo una FYI, puoi farlo facoltativamente dall'XML.

In AndroidManifest.xml, puoi impostarlo con

android:label="My Activity Title"

O

android:label="@string/my_activity_label"

Esempio:

    <activity
        android:name=".Splash"
        android:label="@string/splash_activity_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

28
Perché dovresti votare questo? È bene sapere che puoi farlo anche dall'XML.
BullShark,

8
Questo è praticamente il modo corretto per farlo, con riferimenti a stringhe esterne per consentire una facile localizzazione. Dovrebbe essere accettata la risposta.
Assapora il

10
Non è lo stesso di setTitle (). L'impostazione di android: la proprietà label dell'attività di avvio cambierà anche il nome dell'applicazione nella schermata delle applicazioni del telefono. L'icona dell'applicazione avrà la didascalia "Titolo attività personale".
Doron Zehavi,

2
@doran Anche se hai ragione, e il suo esempio è sbagliato in un certo senso, ha anche ragione. Il suo problema è l'aggiunta di un'etichetta a una schermata iniziale e non lo faresti per una schermata iniziale, piuttosto etichettarla semplicemente con il nome dell'app. Tuttavia, l'etichetta per l'intera applicazione è ciò che determina il titolo assegnato al programma di avvio se impostato
Pazuzu156

1
Questa dovrebbe essere la risposta migliore.
MaXi32

24

Se lo vuoi una volta e lascia che il sistema gestisca il resto (non dinamico), fai così nel tuo file manifest:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name_full" > //This is my custom title name on activity. <- The question is about this one.
            <intent-filter android:label="@string/app_launcher_name" > //This is my custom Icon title name (launcher name that you see in android apps/homescreen)
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

14
setTitle(getResources().getText(R.string.MyTitle));

@Sujay sì, puoi, eccoti qui: provare {int labelRes = getPackageManager (). GetActivityInfo (getComponentName (), 0) .labelRes; Logger.d (this.getClass (). GetSimpleName (), "labelRes:" + labelRes); if (labelRes> 0 && getSupportActionBar ()! = null) {getSupportActionBar (). setTitle (labelRes); }} catch (eccezione PackageManager.NameNotFoundException) {Logger.d (this.getClass (). getSimpleName (), "eccezione rilevata:" + Log.getStackTraceString (eccezione)); }
user1510006

9

Questo ha funzionato per me.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment, container, false);
    getActivity().setTitle("My Title");
//...
}

7

C'è un modo più veloce, basta usare

YourActivity.setTitle("New Title");

Puoi anche trovarlo all'interno di onCreate () con questo, ad esempio:

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

A proposito, ciò che semplicemente non puoi fare è chiamare setTitle () in modo statico senza passare alcun oggetto Activity.


questo non funziona quando si preme il pulsante di standby e si riattiva lo schermo. Il titolo non si aggiorna. Qualche idea?
Jim Clermonts,

Questo perché onCreate () non verrà chiamato nel tuo esempio. Si consiglia di utilizzare invece un altro gestore di eventi, ad esempio onResume (). Ti suggerisco di vedere questo link: developer.android.com/guide/components/activities/…
Defrag

4

Se hai più attività, puoi impostarlo in questo modo in AndroidManifest.xml

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".NumbersActivity"
        android:label="@string/category_numbers"
        android:theme="@style/category_numbers" />
    <activity
        android:name=".FamilyActivity"
        android:label="@string/category_family"
        android:theme="@style/category_family" />
    <activity
        android:name=".ColorsActivity"
        android:label="@string/category_colors"
        android:theme="@style/category_colors" />
    <activity
        android:name=".PhrasesActivity"
        android:label="@string/category_phrases"
        android:theme="@style/category_phrases" />
    <activity
        android:name=".ExperimentActivity"
        android:label="@string/category_experiment"
        android:theme="@style/category_experiment" />
</application>

mi è piaciuto esattamente questo, non ha funzionato. su ogni attività che vedo solo il nome app. Impossibile cambiarlo. è passata più di mezz'ora :(
krupesh Anadkat il

2

Sto usando Android Studio 3.0.1.

Con un'attività:

setTitle("Title Text");

All'interno di un frammento:

getActivity().setTitle("Title Text");

2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Main_Activity);
    this.setTitle("Title name");
}

1

Se vuoi impostare il titolo nel file Java, scrivi nella tua attività su Crea

setTitle("Your Title");

se vuoi in Manifest, scrivi

    <activity
        android:name=".MainActivity"
        android:label="Your Title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

1

Ho una barra degli strumenti nella mia attività e un'attività di base che sovrascrive tutti i titoli. Quindi ho dovuto usare setTitle in onResume () nell'attività in questo modo:

@Override
  protected void onResume() {
    super.onResume();
    toolbar.setTitle(R.string.title);
  }

1

Il codice mi ha aiutato a cambiare il titolo.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    ActivityName.this.setTitle("Your Activity Title");}

0

Se si desidera modificare il titolo dell'attività quando si cambia attività facendo clic sul pulsante. Dichiarare le variabili necessarie in MainActivity:

    private static final String TITLE_SIGN = "title_sign";
    ImageButton mAriesButton;

Aggiungi onClickListener in onCreate () e crea un nuovo intento per un'altra attività:

    mTitleButton = (ImageButton) findViewById(R.id.title_button);
    mTitleButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, 
        SignActivity.class);
        String title_act = getText(R.string.simple_text).toString();
        intent.putExtra("title_act", title_act);
        startActivity(intent);
        finish();
        }
    });

Codice SecondActivity in onCreate ():

    String txtTitle = getIntent().getStringExtra("title_act");
    this.setTitle(txtTitle);

-1

Se stai usando onCreateOptionsMenu , è anche possibile aggiungere setTitle codice onCreateOptionsMenu.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);

    setTitle("Neue Aktivität");
    return true;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.