Jak zmienić tytuł działania w Androidzie?

227

ja używam

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

zmienić tytuł mojej obecnej działalności, ale wydaje się, że to nie działa.

Czy ktoś może mi pomóc, jak to zmienić?

UMAR
źródło

Odpowiedzi:

498

Spróbuj sam setTitle, jak poniżej:

setTitle("Hello StackOverflow");
jeffh
źródło
1
setTitle nie działa dla mnie, getSupportActionBar () i getActionBar () również nulls i nie mogę ustawić tytułu w czasie wykonywania.
Kodowanie Ninja
1
@Ninja_Coding, spróbuj wywołać go z działania.
John Perry
241

Po prostu FYI, możesz opcjonalnie zrobić to z XML.

W pliku AndroidManifest.xml możesz to ustawić za pomocą

android:label="My Activity Title"

Lub

android:label="@string/my_activity_label"

Przykład:

    <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
źródło
28
Dlaczego głosowałbyś na to? Dobrze wiedzieć, że możesz to zrobić również z pliku XML.
BullShark
8
Jest to właściwie podstawowy sposób, aby to zrobić, z odniesieniami do zewnętrznych ciągów, aby umożliwić łatwą lokalizację. Należy przyjąć odpowiedź.
Davor
10
To nie to samo co setTitle (). Ustawienie właściwości android: label działania programu uruchamiającego spowoduje również zmianę nazwy aplikacji na ekranie aplikacji telefonu. Ikona aplikacji będzie miała podpis „My Activity Title”.
Doron Zehavi
2
@doran Chociaż masz rację, a jego przykład jest w pewien sposób błędny, on również ma rację. Jego problemem jest dodanie etykiety do ekranu powitalnego, a nie zrobiłbyś tego w przypadku ekranu powitalnego, a raczej po prostu oznacz go nazwą aplikacji. Jednak etykieta dla całej aplikacji określa tytuł nadany
programowi
1
To powinna być najlepsza odpowiedź.
MaXi32,
24

Jeśli chcesz to raz i pozwól systemowi zająć się resztą (nie dynamiczną), zrób tak w pliku manifestu:

<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
źródło
14
setTitle(getResources().getText(R.string.MyTitle));
Giennadij Kozłow
źródło
@Sujay tak, możesz, oto jesteś: spróbuj {int labelRes = getPackageManager (). GetActivityInfo (getComponentName (), 0) .labelRes; Logger.d (this.getClass (). GetSimpleName (), „labelRes:” + labelRes); if (labelRes> 0 && getSupportActionBar ()! = null) {getSupportActionBar (). setTitle (labelRes); }} catch (wyjątek PackageManager.NameNotFoundException) {Logger.d (this.getClass (). getSimpleName (), „przechwycony wyjątek:” + Log.getStackTraceString (wyjątek)); }
user1510006
9

To zadziałało dla mnie.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment, container, false);
    getActivity().setTitle("My Title");
//...
}
moberme
źródło
7

Jest szybszy sposób, po prostu użyj

YourActivity.setTitle("New Title");

Można go również znaleźć wewnątrz onCreate () , na przykład:

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

Nawiasem mówiąc, po prostu nie można wywołać metody setTitle () w sposób statyczny, nie przekazując żadnego obiektu Activity.

Defrag
źródło
nie działa to po naciśnięciu przycisku gotowości i ponownym uruchomieniu ekranu. Tytuł się nie aktualizuje. Jakieś pomysły?
Jim Clermonts,
To dlatego, że onCreate () nie będzie wywoływany w twoim przykładzie. Należy rozważyć użycie innej procedury obsługi zdarzeń, takiej jak onResume (). Sugeruję, aby zobaczyć ten link: developer.android.com/guide/components/activities/...
Defrag
4

Jeśli masz wiele działań, możesz to ustawić w 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>
SGX
źródło
zrobiłem dokładnie tak, to nie działało. na każdej aktywności widzę tylko nazwę aplikacji. Nie można tego zmienić. minęło już ponad pół godziny :(
krupesh Anadkat
2

Używam Androida Studio 3.0.1.

Z działalnością:

setTitle("Title Text");

Wewnątrz fragmentu:

getActivity().setTitle("Title Text");
Adriana
źródło
2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Main_Activity);
    this.setTitle("Title name");
}
Govind Maheshwari
źródło
1

Jeśli chcesz ustawić tytuł w pliku Java, wpisz swoją aktywność na stronie Utwórz

setTitle("Your Title");

jeśli chcesz w Manifeście, napisz

    <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
źródło
1

W moim działaniu mam pasek narzędzi i działanie podstawowe, które zastępuje wszystkie tytuły. Musiałem więc użyć setTitle w onResume () w Activity w następujący sposób:

@Override
  protected void onResume() {
    super.onResume();
    toolbar.setTitle(R.string.title);
  }
Hissatsu
źródło
1

Kod pomógł mi zmienić tytuł.

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

Jeśli chcesz zmienić tytuł działania po zmianie działania, klikając przycisk. Zadeklaruj niezbędne zmienne w MainActivity:

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

Dodaj onClickListener w onCreate () i stwórz nowy zamiar dla innej aktywności:

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

Kod SecondActivity w onCreate ():

    String txtTitle = getIntent().getStringExtra("title_act");
    this.setTitle(txtTitle);
Egor Voevodin
źródło
-1

Jeśli używasz onCreateOptionsMenu , można również dodać setTitle kod w onCreateOptionsMenu.

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

    setTitle("Neue Aktivität");
    return true;
}
Umut D.
źródło