Bagaimana cara mengubah judul Aktivitas di Android?

227

saya menggunakan

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

untuk mengubah judul Aktivitas saya saat ini tetapi sepertinya tidak berhasil.

Adakah yang bisa membimbing saya tentang cara mengubahnya?

UMAR
sumber

Jawaban:

498

Coba setTitle dengan sendirinya, seperti ini:

setTitle("Hello StackOverflow");
jeffh
sumber
1
setTitle tidak berfungsi untuk saya, getSupportActionBar () dan getActionBar () juga nulls saya tidak bisa mengatur judul di runtime.
Ninja Coding
1
@Ninja_Coding, coba panggil dari Activity.
John Perry
241

Hanya FYI, Anda dapat melakukannya secara opsional dari XML.

Di AndroidManifest.xml, Anda dapat mengaturnya dengan

android:label="My Activity Title"

Atau

android:label="@string/my_activity_label"

Contoh:

    <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
sumber
28
Mengapa Anda memilih ini? Senang mengetahui bahwa Anda dapat melakukannya dari XML juga.
BullShark
8
Ini adalah cara terbaik untuk melakukannya, dengan referensi ke string eksternal untuk memungkinkan lokalisasi yang mudah. Harus diterima jawaban.
Davor
10
Itu tidak sama dengan setTitle (). Mengatur android: properti label dari aktivitas launcher juga akan mengubah nama aplikasi pada layar aplikasi ponsel. Ikon aplikasi Anda akan memiliki judul "Judul Aktivitas Saya".
Doron Zehavi
2
@oran Sementara Anda benar, dan contohnya salah dalam satu hal, ia juga benar. Masalahnya adalah menambahkan label ke layar splash, dan Anda tidak akan melakukannya untuk layar splash, melainkan hanya label dengan nama aplikasi. Namun label untuk seluruh aplikasi adalah apa yang menentukan judul yang diberikan kepada peluncur jika diatur
Pazuzu156
1
Ini harus menjadi jawaban terbaik.
MaXi32
24

Jika Anda menginginkannya satu kali & biarkan sistem menangani sisanya (tidak dinamis) maka lakukan seperti ini di file manifes Anda:

<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
sumber
14
setTitle(getResources().getText(R.string.MyTitle));
Gennady Kozlov
sumber
@Sujay ya, Anda bisa, di sini Anda: coba {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 tertangkap:" + Log.getStackTraceString (pengecualian)); }
user1510006
9

Ini berhasil untuk saya.

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

Ada cara yang lebih cepat, gunakan saja

YourActivity.setTitle("New Title");

Anda juga dapat menemukannya di dalam onCreate () dengan ini, misalnya:

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

Ngomong-ngomong, apa yang tidak bisa Anda lakukan adalah memanggil setTitle () dengan cara statis tanpa melewati objek Activity apa pun.

Defrag
sumber
ini tidak berfungsi saat menekan tombol siaga dan membuat layar aktif kembali. Judul tidak diperbarui. Ada ide?
Jim Clermonts
Itu karena onCreate () tidak akan dipanggil dalam contoh Anda. Anda harus mempertimbangkan menggunakan pengendali acara lain, seperti onResume (). Saya sarankan Anda untuk melihat tautan ini: developer.android.com/guide/components/activities/…
Defrag
4

Jika Anda memiliki beberapa aktivitas, Anda dapat mengaturnya seperti ini di 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
sumber
saya melakukan persis seperti ini, tidak berhasil. pada setiap aktivitas yang saya lihat hanya Nama Aplikasi. Tidak dapat mengubahnya. sekarang sudah lebih dari setengah jam :(
krupesh Anadkat
2

Saya menggunakan Android Studio 3.0.1.

Dengan Aktivitas:

setTitle("Title Text");

Di dalam sebuah fragmen:

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

Jika Anda ingin mengatur judul dalam file Java, tulis di aktivitas Anda diCreate

setTitle("Your Title");

jika Anda ingin dalam Manifest kemudian tulis

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

Saya memiliki Bilah Alat di Aktivitas dan Aktivitas Dasar yang mengesampingkan semua Judul. Jadi saya harus menggunakan setTitle di onResume () di Activity seperti:

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

Kode membantu saya mengubah judul.

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

Jika Anda ingin mengubah Judul aktivitas saat Anda mengubah aktivitas dengan mengklik tombol. Deklarasikan variabel yang diperlukan di MainActivity:

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

Tambahkan onClickListener di onCreate () dan buat maksud baru untuk aktivitas lain:

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

Kode SecondActivity di onCreate ():

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

Jika Anda menggunakan onCreateOptionsMenu , Anda juga dapat menambahkan kode setTitle di onCreateOptionsMenu.

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

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