2010-02-04 34 views
181

我使用如何更改Android中活動的標題?

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

改變我目前的活動名稱,但它似乎並沒有工作。

任何人都可以指導我如何改變這種情況嗎?本身

回答

412

嘗試的setTitle,像這樣:

setTitle("Hello StackOverflow"); 
+0

的setTitle不是爲我工作,getSupportActionBar()和getActionBar()也空值我不能設置在運行時的標題。 –

+1

@Ninja_Coding,嘗試從Activity中調用它。 –

185

只是一個供參考,您可以選擇從XML做到這一點。

在AndroidManifest.xml中,您可以用

android:label="My Activity Title" 

或者

設置
android:label="@strings/my_activity_label" 

例子:

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

你爲什麼要投票呢?很高興知道您也可以從XML中完成。 – BullShark

+6

這幾乎是實現它的核心方式,引用了外部字符串以實現簡單的本地化。應該接受答案。 – Davor

+5

它與setTitle()不一樣。設置啓動器活動的android:label屬性也將更改手機應用程序屏幕上應用程序的名稱。你的應用程序的圖標將有「我的活動標題」標題。 –

22

如果你想它一個時間&使系統處理休息(不動態),然後在你的清單文件中這樣做:

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

這對我有效。

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

我可以從清單文件中讀取活動標題嗎? – Sujay

+0

@Sujay是的,你可以,在這裏你是: 嘗試int labelRes = getPackageManager()。getActivityInfo(getComponentName(),0).labelRes; Logger.d(this.getClass()。getSimpleName(),「labelRes:」+ labelRes); if(labelRes> 0 && getSupportActionBar()!= null)getSupportActionBar()。setTitle(labelRes); (ExceptionManager);}};}};}};}};}};}};}} catch(PackageManager.NameNotFoundException異常)Logger.d(this.getClass()。getSimpleName(),「exception caught:」+ Log.getStackTraceString(exception) } – user1510006

-1

如果你想設置的Java文件標題,然後在活動的onCreate寫

setTitle("Your Title"); 

,如果你想在清單然後寫

<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

請編輯並填寫您的答案。 – luka5z

5

有一個更快的方式,只需使用

YourActivity.setTitle("New Title"); 

您還可以找到它的的onCreate()這個裏面,例如:

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

順便說一句,你根本無法做的是調用的setTitle()以靜態方式不傳遞任何活動目的。

+0

按下待機按鈕並使屏幕再次激活時,這不起作用。標題不更新。有任何想法嗎? –

+0

這是因爲您的示例中不會調用onCreate()。您應該考慮使用另一個事件處理程序,例如onResume()。我建議你看看這個鏈接:https://developer.android.com/guide/components/activities/activity-lifecycle.html – Defrag

4

如果您有多個活動,您可以在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> 
0

我有我的活動工具欄,並且覆蓋所有的標題一個基本活動。所以我不得不使用中的setTitle的onResume()在活動像這樣:

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

如果你想,當你通過點擊按鈕來改變活動更改活動名稱。聲明必需的變量在MainActivity:

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

添加onClickListener中的onCreate(),並作出新的意向爲另一個活動:

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代碼的onCreate():

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

我使用Android Studio 3.0.1。

與活動:

setTitle("Title Text"); 

裏面一個片段:

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