Wie ändere ich den Titel der Aktivität in Android?

227

ich benutze

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

Titel meiner aktuellen Aktivität zu ändern, aber es scheint nicht zu funktionieren.

Kann mich jemand anleiten, wie ich das ändern kann?

UMAR
quelle

Antworten:

497

Versuchen Sie setTitle selbst wie folgt:

setTitle("Hello StackOverflow");
jeffh
quelle
1
setTitle funktioniert bei mir nicht, getSupportActionBar () und getActionBar () sind ebenfalls null. Ich kann den Titel nicht zur Laufzeit festlegen.
Ninja Coding
1
@Ninja_Coding, versuchen Sie es aus der Aktivität aufzurufen.
John Perry
241

Nur zu Ihrer Information, Sie können dies optional über XML tun.

In der AndroidManifest.xml können Sie es mit einstellen

android:label="My Activity Title"

Oder

android:label="@string/my_activity_label"

Beispiel:

    <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>
BullShark
quelle
28
Warum würden Sie dies ablehnen? Es ist gut zu wissen, dass Sie dies auch über XML tun können.
BullShark
8
Dies ist so ziemlich die richtige Methode, mit Verweisen auf externe Zeichenfolgen, um eine einfache Lokalisierung zu ermöglichen. Sollte als Antwort akzeptiert werden.
Davor
10
Es ist nicht dasselbe wie setTitle (). Durch Festlegen der android: label-Eigenschaft der Launcher-Aktivität wird auch der Name der Anwendung auf dem Anwendungsbildschirm des Telefons geändert. Das Symbol Ihrer Anwendung enthält die Überschrift "Titel meiner Aktivität".
Doron Zehavi
2
@doran Während Sie richtig sind und sein Beispiel in gewisser Weise falsch ist, hat er auch Recht. Sein Problem ist das Hinzufügen eines Etiketts zu einem Begrüßungsbildschirm, und Sie würden dies nicht für einen Begrüßungsbildschirm tun, sondern nur mit dem Namen der App beschriften. Die Bezeichnung für die gesamte Anwendung bestimmt jedoch den Titel, der dem Launcher gegeben wird, wenn er festgelegt ist
Pazuzu156
1
Dies sollte die beste Antwort sein.
MaXi32
24

Wenn Sie es einmal wollen und das System den Rest erledigen lassen (nicht dynamisch), gehen Sie wie folgt in Ihrer Manifestdatei vor:

<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>
hB0
quelle
14
setTitle(getResources().getText(R.string.MyTitle));
Gennady Kozlov
quelle
@Sujay ja, Sie können, hier sind Sie: 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-Ausnahme) {Logger.d (this.getClass (). getSimpleName (), "Ausnahme abgefangen:" + Log.getStackTraceString (Ausnahme)); }
user1510006
9

Das hat bei mir funktioniert.

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

Es gibt einen schnelleren Weg, einfach benutzen

YourActivity.setTitle("New Title");

Sie können es auch in onCreate () finden , zum Beispiel:

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

Übrigens können Sie setTitle () einfach nicht statisch aufrufen, ohne ein Activity-Objekt zu übergeben.

Defragmentieren
quelle
Dies funktioniert nicht, wenn Sie die Standby-Taste drücken und den Bildschirm wieder aktivieren. Der Titel wird nicht aktualisiert. Irgendwelche Ideen?
Jim Clermonts
Dies liegt daran, dass onCreate () in Ihrem Beispiel nicht aufgerufen wird. Sie sollten stattdessen einen anderen Ereignishandler verwenden, z. B. onResume (). Ich schlage vor, diesen Link zu sehen: developer.android.com/guide/components/activities/…
Defragmentieren Sie den
4

Wenn Sie mehrere Aktivitäten haben, können Sie dies in AndroidManifest.xml so einstellen

<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>
SGX
quelle
Ich habe genau das getan, es hat nicht funktioniert. Bei jeder Aktivität sehe ich nur den App-Namen. Kann nicht geändert werden. ist jetzt mehr als eine halbe Stunde gewesen :(
krupesh Anadkat
2

Ich benutze Android Studio 3.0.1.

Mit einer Aktivität:

setTitle("Title Text");

In einem Fragment:

getActivity().setTitle("Title Text");
adrian
quelle
2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Main_Activity);
    this.setTitle("Title name");
}
Govind Maheshwari
quelle
1

Wenn Sie den Titel in einer Java-Datei festlegen möchten, schreiben Sie in Ihre Aktivität onCreate

setTitle("Your Title");

Wenn Sie in Manifest möchten, schreiben Sie

    <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>
Gundu Bandagar
quelle
1

Ich habe eine Symbolleiste in meiner Aktivität und eine Basisaktivität, die alle Titel überschreibt. Also musste ich setTitle in onResume () in der Aktivität wie folgt verwenden:

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

Der Code hat mir geholfen, den Titel zu ändern.

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

Wenn Sie den Titel der Aktivität ändern möchten, wenn Sie die Aktivität ändern, indem Sie auf die Schaltfläche klicken. Deklarieren Sie die erforderlichen Variablen in MainActivity:

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

Fügen Sie onClickListener in onCreate () hinzu und machen Sie eine neue Absicht für eine andere Aktivität:

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

SecondActivity-Code in onCreate ():

    String txtTitle = getIntent().getStringExtra("title_act");
    this.setTitle(txtTitle);
Egor Voevodin
quelle
-1

Wenn Sie onCreateOptionsMenu verwenden , können Sie in onCreateOptionsMenu auch setTitle- Code hinzufügen.

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

    setTitle("Neue Aktivität");
    return true;
}
Umut D.
quelle