将新的Android项目命名为MainActivity而不是应用程序名称

9
我正在使用最新版本的ADT插件在Eclipse Juno中创建新的Android项目,但是我遇到了一个关于应用名称的问题。每当我运行应用程序时,它都可以正常运行,但是当我查看应用列表时,应用名称却不在其中。相反,我有一个名为MainActivity的新应用程序,这是应用程序中第一个活动的名称。虽然app_name字符串已设置为应用程序的名称,但它仍然无法正常工作。我发现将title_activity_main更改为应用程序的名称可以解决应用抽屉中错误的应用程序名称问题,但这似乎是一种比较原始的解决方法。还有其他人遇到这个问题吗?或者只是像我一样讨厌新的ADT插件?
清单代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bv.testapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="4"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


你能发布你的清单代码吗? - BlackHatSamurai
@Shaun:要适应这种情况-他们改变了目标。这是新ADT的工作方式。抱歉,没有冒犯之意,但我发现升级后有很多东西都改变了-当你创建一个新项目时,你需要重新阅读各种自动生成的文件,以了解它们的命名方式-或者手动创建所有内容。 - Squonk
我喜欢变革的想法,一开始我很喜欢创建新应用程序的新向导,直到我看到后端发生了那么多变化。你会认为指定应用程序名称会使实际应用程序显示在该名称下,而不是主要活动。这没有任何意义。 - Shaun
问题已经解决并详细说明在这里 -> 如何在Android中为我的应用程序命名 - Re MiDa
7个回答

29

我为你找到了解决方案。在清单文件中,您可以为启动器图标设置一个标签,为活动设置另一个标签。应用程序名称在意图过滤器中设置,如下所示:

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

干杯

//恶心的


我的是这样的,即使如此,我将activity_start作为应用程序的名称。 - efaj

5

最近我遇到了这个问题:你能否尝试一下这个:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name" >

或者从活动中删除android:label


1
好的,运行成功了。他们改成将活动标签命名为title_activity_main,弄乱应用程序名称似乎有点奇怪。 - Shaun

3

我也使用了更新的ADT,遇到了同样的问题,并最终找到了唯一的解决方案,如下:

<application
    android:name="GlobalData"
    android:icon="@drawable/hdpi"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <activity android:theme="@android:style/Theme.NoTitleBar"
        android:name=".ApplicationCommence"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

这里的"@string/app_name"代表我的项目名称。


1
虽然这并没有真正解决问题,但我所要做的就是添加android:name="TestApp",然后从下面的活动中删除标签。运行它,它可以正常工作。然后我将清单重置回上面发布的内容,它也可以正常工作。因此,我认为问题出在Android配置文件中,当我调整它时,问题就得到了解决。非常奇怪的问题。 - Shaun
所以,唯一真正解决这个问题的方法是将第一个活动标签设置为@string/app_name。如果这被设置为title_activity_main,就像新向导想要的那样,那么你将会有错误的名称问题。我将与谷歌联系… - Shaun
好的,注意到谷歌存在的问题(不仅主要活动名称出现在应用列表中,而且在此之后添加的每个活动都是如此)。他们回复我说这将在下一个ADT版本中得到修复。 - Shaun

0
我也为这个问题感到烦恼,最终找到了一个解决方法,现在我确定这是新ADT中的一个错误。我添加了android:name="name_of_my_app"并更改了android:label="name_of_the_app",它按预期工作了。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nitin.sunflow"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    android:name = "Sunflow"
    <activity
        android:name=".MainActivity"
        android:label="Sunflow" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


0

我注意到很多演示应用程序都带有MainActivity的名称,这使得导入其他项目变得很麻烦...但是“右键单击项目==>重命名”不应该解决名称冲突吗?


-1
为了解决这个问题,请养成在“标题”处标注应用程序名称的习惯。这显然会解决您的问题。

你的回答不够明确。我不理解你在标题中提到应用程序名称的意思是什么?你是什么意思? - Shaun

-2

从新的ADT创建新的Android项目的步骤:

  1. 输入应用程序名称/包和目标SDK版本。
  2. 在下一个视图中,选择您的应用程序图标。
  3. 在第三个视图中,您需要在两个活动之间进行选择 - 空白活动和主细节流。
  4. 在第四个视图中,输入您的活动名称、布局名称,最后一个字段是“标题”,在该字段中输入您的应用程序名称,当您将应用程序安装到设备/模拟器上时,您将通过那里看到您的应用程序名称。

清楚吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接