Làm cách nào để thay đổi tiêu đề Hoạt động trong Android?


227

tôi đang dùng

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

để thay đổi tiêu đề Hoạt động hiện tại của tôi nhưng có vẻ như nó không hoạt động.

Bất cứ ai có thể hướng dẫn tôi làm thế nào để thay đổi điều này?

Câu trả lời:


498

Hãy thử setTitle một mình, như thế này:

setTitle("Hello StackOverflow");

1
setTitle không hoạt động với tôi, getSupportActionBar () và getActionBar () cũng null tôi không thể đặt tiêu đề trong thời gian chạy.
Mã hóa Ninja

1
@Ninja_Coding, hãy thử gọi nó từ Hoạt động.
John Perry

241

Chỉ cần một FYI, bạn có thể tùy ý làm điều đó từ XML.

Trong AndroidManifest.xml, bạn có thể đặt nó với

android:label="My Activity Title"

Hoặc là

android:label="@string/my_activity_label"

Thí dụ:

    <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
Tại sao bạn lại bỏ phiếu này? Thật tốt khi biết bạn cũng có thể làm điều đó từ XML.
BullShark

8
Đây là cách khá nhiều để thực hiện nó, với các tham chiếu đến các chuỗi bên ngoài để cho phép nội địa hóa dễ dàng. Nên chấp nhận trả lời.
Thưởng thức

10
Nó không giống với setTitle (). Đặt thuộc tính android: nhãn của hoạt động launcher cũng sẽ thay đổi tên của ứng dụng trên màn hình ứng dụng của điện thoại. Biểu tượng của ứng dụng của bạn sẽ có chú thích "Tiêu đề hoạt động của tôi".
Doron Zehavi

2
@doran Trong khi bạn đúng, và ví dụ của anh ấy sai theo một cách nào đó, anh ấy cũng đúng. Vấn đề của anh ấy là thêm nhãn vào màn hình giật gân và bạn sẽ không làm điều đó cho màn hình giật gân, thay vào đó chỉ gắn nhãn với tên ứng dụng. Tuy nhiên, nhãn cho toàn bộ ứng dụng là thứ quyết định tiêu đề được trao cho trình khởi chạy nếu nó được đặt
Pazuzu156

1
Đây phải là câu trả lời tốt nhất.
MaXi32

24

Nếu bạn muốn nó một lần và để hệ thống xử lý phần còn lại (không động) thì hãy làm như thế này trong tệp kê khai của bạ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 có, bạn có thể, đây là: hãy thử {int nhãnRes = getPackageManager (). GetActivityInfo (getComponentName (), 0) .labelRes; Logger.d (this.getClass (). GetSimpleName (), "nhãnRes:" + nhãnRes); if (nhãnRes> 0 && getSupportActionBar ()! = null) {getSupportActionBar (). setTitle (nhãnRes); }} Catch (ngoại lệ PackageManager.NameNotFoundException) {Logger.d (this.getClass (). getSimpleName (), "ngoại lệ bị bắt:" + Log.getStackTraceString (ngoại lệ)); }
user1510006

9

Điều này làm việc cho tôi.

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

7

Có một cách nhanh hơn, chỉ cần sử dụng

YourActivity.setTitle("New Title");

Bạn cũng có thể tìm thấy nó bên trong onCreate () với điều này, ví dụ:

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

Nhân tiện, những gì bạn đơn giản không thể làm là gọi setTitle () theo cách tĩnh mà không truyền bất kỳ đối tượng Activity nào.


Điều này không hoạt động khi nhấn nút chờ và làm cho màn hình hoạt động trở lại. Tiêu đề không cập nhật. Có ý kiến ​​gì không?
Jim Clermonts

Đó là bởi vì onCreate () sẽ không được gọi trong ví dụ của bạn. Bạn nên xem xét sử dụng một trình xử lý sự kiện khác, chẳng hạn như onResume (). Tôi đề nghị bạn nên xem liên kết này: developer.android.com/guide/components/activities/NH
Defrag

4

Nếu bạn có nhiều hoạt động, bạn có thể thiết lập nó như thế này trong 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>

tôi đã làm chính xác như thế này, nó đã không hoạt động. trên mọi hoạt động tôi chỉ thấy Tên ứng dụng. Không thể thay đổi nó. bây giờ đã hơn nửa giờ :(
krupesh Anadkat

2

Tôi đang sử dụng Android Studio 3.0.1.

Hoạt động:

setTitle("Title Text");

Bên trong một mảnh:

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

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

1

Nếu bạn muốn đặt tiêu đề trong tệp Java, thì hãy viết vào hoạt động của bạn trênCreate

setTitle("Your Title");

nếu bạn muốn trong Manifest thì hãy viết

    <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

Tôi có Thanh công cụ trong Hoạt động của mình và Hoạt động cơ bản ghi đè tất cả các Tiêu đề. Vì vậy, tôi đã phải sử dụng setTitle trong onResume () trong Hoạt động như vậy:

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

1

Mã đã giúp tôi thay đổi tiêu đề.

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

0

Nếu bạn muốn thay đổi Tiêu đề hoạt động khi bạn thay đổi hoạt động bằng cách nhấp vào Nút. Khai báo các biến cần thiết trong MainActivity:

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

Thêm onClickListener trong onCreate () và thực hiện ý định mới cho hoạt động khác:

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

Mã thứ hai trong onCreate ():

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

-1

Nếu bạn đang sử dụng onCreateOptionsMothy , bạn cũng có thể thêm mã setTitle trong onCreateOptionsMothy.

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

    setTitle("Neue Aktivität");
    return true;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.