2011-03-22 109 views
19

我已查看應用程序的清單,並且在應用程序啓動器下顯示爲活動名稱而不是其應用程序名稱?爲什麼是這樣。我有另一個應用程序,當我安裝它時,應用程序中每個活動都有5個條目,應該只有一個名稱,應用程序的名稱?所以當我啓動時,它在啓動列表中有5個相同名稱的應用程序。這些以應用程序命名,但每個活動都有一個。這可能是什麼原因?Android應用程序名稱顯示爲活動名稱

+0

這似乎很奇怪。我的意思是爲什麼Android應用程序甚至允許具有相同名稱的多個應用程序出現在應用程序啓動列表中 – Androider 2011-03-22 20:28:14

+1

請粘貼您的清單內容。 – tvkanters 2011-03-22 20:30:11

+0

其中一個問題是,對於同名多個應用程序來說,太多的laucher類活動太多。 – Androider 2011-03-22 20:37:13

回答

12

對於第一個問題,你應該知道,這個名字來自於應用標籤的android:label屬性:

<application android:name="ApiDemosApplication" 
    android:label="@string/activity_sample_code" 
    android:icon="@drawable/app_sample_code"> 

對於第二個問題,在清單中,它可能是所有的活動指定一個動作爲android.intent.category.LAUNCHER的意圖過濾器。例如:

<activity android:name="ApiDemos"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

如果您對所有的活動,意圖過濾器標籤,你應該拿出你想在啓動時發動對所有意圖過濾器標籤,但該活動。

+1

好的。所以如果沒有標籤,它會選擇主要活動的名稱。 – Androider 2011-03-22 20:54:20

+0

仍然看起來像發射器條目應該是爲應用程序,而不是基於活動的所有,但這是問題 – Androider 2011-03-22 20:55:14

+1

實際上,我在上面張貼的清單中有一個Android標籤? – Androider 2011-03-22 20:56:51

2

當您通過Eclipse創建Activity時,您的活動中的屬性android:label會自動設置爲AndroidManifest.xml中的「@ string/your_activity_name」。添加意圖過濾器爲此活動提供啓動程序,啓動程序將獲得與您的Activities android:label相同的標籤。

如果您想用您的應用程序名稱來標記啓動程序,則應將Activities android:label更改爲「@ string/app_name」之類的內容。

36

以上接受的答案是錯誤的。它說,

的名字來自安卓應用標籤

這是不正確的標籤屬性。以下面的代碼爲例。

<activity android:name="ApiDemos" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

在這段代碼,顯示啓動器中的應用程序名稱是由android:label屬性在activity標籤不application標籤作爲上述接受的答案說設置。

要糾正上述接受的響應,在啓動圖標下顯示的名稱來自於入口點活動的activity標籤(包含DEFAULTLAUNCHER類的活動標籤)的android:label屬性,除非你不指定在這種情況下,它來自application標記上的android:label屬性。

您的第一個問題可以通過更改入口點活動標記中的android:label屬性來解決。

+3

多麼奇怪的行爲。使用活動的活動名稱和啓動程序的應用程序名稱似乎更符合邏輯。你看到它的工作原理嗎? – 2013-08-17 15:26:42

+2

這是這樣的應用程序開發人員可以有多個啓動器圖標(和相關的入口點活動),並能夠爲每個啓動器圖標分別名稱。您可以通過在清單中的多個活動代碼中包含以下代碼來執行此操作: ' ' 並向每個activity標籤添加'android:label =「@ string/app_name」''。 – Patrick 2013-08-20 06:18:55

+2

@Patrick所以我怎樣才能把標籤從應用程序名稱中分離出來?如果我願意只有一項主要活動? – 2016-08-18 16:20:48

5

當您點擊應用程序圖標時,具有不同應用程序名稱(出現在應用程序圖標下的名稱)和正在啓動的活動的名稱不同的一種方法是在活動的中顯式設置不同的字符串onCreate()方法,像這樣:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Do your thing 
    // ... bla bla bla 

    getActionBar().setTitle(R.string.activity_title); 
} 

希望這有助於!

+1

這是正確的答案。 – 2015-04-07 17:21:33

0

運行的Android 4.1.2版的應用程序的名稱將是「靜態」相對於在活動中定義設置主發射器,而不是覆蓋在任何的意圖過濾器

0

彷彿要放置標籤工具欄標題的圖像視圖。您必須更新Android清單中特定活動的標籤,作爲android:label="";,這樣您的活動名稱將不會顯示在圖像視圖後的工具欄中,請使用以下代碼將圖像視圖與導航圖標一起設置,並且無需工具欄標題。

try { 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    toolbar.setTitle(""); 
    if (getSupportActionBar() != null) 
     getSupportActionBar().setIcon(R.drawable.header_image_wt); 
} catch (Exception e) { 
    e.getMessage(); 
} 
相關問題