2011-03-22 108 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(); 
} 
相关问题