Android'de Etkinlik başlığını nasıl değiştirebilirim?


227

Ben kullanıyorum

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

şu anki Etkinliğimin başlığını değiştirmek için çalışıyor ancak çalışmıyor gibi görünüyor.

Birisi bana bunu nasıl değiştireceğim konusunda rehberlik edebilir mi?

Yanıtlar:


498

Kendi başına setTitle'ı deneyin:

setTitle("Hello StackOverflow");

1
setTitle benim için çalışmıyor, getSupportActionBar () ve getActionBar () da nulls çalışma zamanında başlığı ayarlayamıyorum.
Ninja Kodlama

1
@Ninja_Coding, Etkinlik'ten çağırmayı deneyin.
John Perry

241

Sadece bir FYI, bunu isteğe bağlı olarak XML'den yapabilirsiniz.

AndroidManifest.xml dosyasında,

android:label="My Activity Title"

Veya

android:label="@string/my_activity_label"

Misal:

    <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
Bunu neden reddedesin? XML'den de yapabileceğinizi bilmek güzel.
BullShark

8
Kolay lokalizasyonu sağlamak için harici dizelere referanslarla bu hemen hemen bunu yapmanın doğru yoludur. Cevap kabul edilmelidir.
Davor

10
SetTitle () ile aynı değildir. Başlatıcı etkinliğinin android: label özelliğini ayarlamak, telefonun uygulamalar ekranındaki uygulamanın adını da değiştirir. Uygulamanızın simgesi "Etkinlik Başlığım" başlığına sahip olacak.
Doron Zehavi

2
@doran Doğru ve onun örneği bir şekilde yanlışken, o da haklı. Onun sorunu bir açılış ekranına bir etiket eklemek ve bunu bir açılış ekranı için yapmazsınız, sadece uygulama adıyla etiketleyin. Ancak, tüm başvurunun etiketi, ayarlanmışsa başlatıcıya verilen başlığı belirleyen şeydir
Pazuzu156

1
Bu en iyi cevap olmalı.
MaXi32

24

Bir kez istiyorsanız ve sistemin geri kalanını (dinamik değil) işlemesine izin verirseniz, manifest dosyanızda bunu yapın:

<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 evet, yapabilirsiniz, işte buradasınız: {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 istisnası) {Logger.d (this.getClass (). getSimpleName (), "istisna yakalandı:" + Log.getStackTraceString (istisna)); }
user1510006

9

Bu benim için çalıştı.

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

7

Daha hızlı bir yol var, sadece kullan

YourActivity.setTitle("New Title");

Bunu bununla onCreate () içinde de bulabilirsiniz , örneğin:

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

Bu arada, basitçe yapamayacağınız şey, herhangi bir Activity nesnesini iletmeden setTitle () yöntemini statik bir şekilde çağırmaktır.


bekleme düğmesine basıldığında ve ekran tekrar aktif hale getirildiğinde bu çalışmaz. Başlık güncellenmiyor. Herhangi bir fikir?
Jim Clermonts

Bunun nedeni, örneğinizde onCreate () yönteminin çağrılmamasıdır. Bunun yerine onResume () gibi başka bir olay işleyici kullanmayı düşünmelisiniz. Bu bağlantıyı görmenizi öneririm: developer.android.com/guide/components/activities/…
Defrag

4

Birden fazla etkinliğiniz varsa AndroidManifest.xml'de bu şekilde ayarlayabilirsiniz

<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>

tam olarak böyle yaptım, işe yaramadı. her etkinlikte sadece Uygulama Adı görüyorum. Değiştirilemiyor. şimdi yarım saatten fazla oldu :(
krupesh Anadkat

2

Android Studio 3.0.1 kullanıyorum.

Bir Faaliyetle:

setTitle("Title Text");

Bir parçanın içinde:

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

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

1

Java dosyasında başlık ayarlamak istiyorsanız, etkinliğinize

setTitle("Your Title");

eğer Manifest'te yazmak istiyorsanız

    <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

Etkinliğimde bir Araç Çubuğu ve tüm Başlıkları geçersiz kılan Temel Etkinlik var. Bu yüzden Faaliyette onResume () setTitle kullanmak zorunda kaldım:

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

1

Kod başlığı değiştirmeme yardımcı oldu.

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

0

Düğmeyi tıklayarak etkinliği değiştirdiğinizde Etkinlik başlığını değiştirmek isterseniz. MainActivity'de gerekli değişkenleri bildirin:

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

OnCreate () öğesine onClickListener'ı ekleyin ve başka bir etkinlik için yeni niyet oluşturun:

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

OnCreate () öğesindeki SecondActivity kodu:

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

-1

OnCreateOptionsMenu kullanıyorsanız, onCreateOptionsMenu'ya setTitle kodunu da ekleyebilirsiniz .

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

    setTitle("Neue Aktivität");
    return true;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.