Android第一个应用程序,所有活动在菜单中可见

时间:2012-08-10 16:44:20

标签: android

我刚创建了我的第一个Android应用程序,一切正常,但所有活动都显示在我的Android菜单上。我做错了什么?

屏幕截图:imgur.com/9CmXU 我想要一个图标,指向MainActivity,而不是所有活动

    <!-- language-all: lang-html -->
     <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myApps.birthdaymeter"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <application
        android:icon="@drawable/my_logo"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <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>
        <activity
            android:name=".BirthdayMeter"
            android:label="@string/title_activity_birthday_meter" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ShowResult"
            android:label="@string/title_activity_show_result" >
            <intent-filter>


  <action android:name="android.intent.action.MAIN" />

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

</manifest>

这是我的清单,更改徽标没有帮助

3 个答案:

答案 0 :(得分:1)

<intent-filter>标记用于描述每个Activity将响应的Intent类型。 "android.intent.action.MAIN"操作表示此Activity是应用程序的入口点(想想java程序需要的主要方法)。 "android.intent.category.LAUNCHER"类别告诉操作系统在您的应用程序列表中显示活动。添加DEFAULT类别是可以的,但实际上与完全省略<intent-filter>标记相同(我发现它可以更清晰,更容易阅读代码)。您应该只在<intent-filter>标记中使用这两个操作和类别,这些操作和类别在用户打开您的应用时启动。如果您希望应用程序中的Activity能够响应某些特殊意图,您可以使用该标记来定义它响应的内容。

以下是google开发页面的链接,可帮助您了解有关Intent过滤器的更多信息。

http://developer.android.com/guide/components/intents-filters.html

以下是<intent-filter>代码的文档。但这并不是最容易理解的。

http://developer.android.com/guide/topics/manifest/intent-filter-element.html

这是Manifest文件和Intent类的文档。如果您不确定在Manifest中使用哪些标记,这两个都可以参考。祝你好运!

http://developer.android.com/guide/topics/manifest/manifest-intro.html

http://developer.android.com/reference/android/content/Intent.html

答案 1 :(得分:0)

你非常普遍地提出了你的问题,所以我不知道该回答什么。您似乎没有在发起其他活动时调用nameOfActivity.this.finish()

答案 2 :(得分:0)

如果您发布清单文件,我可以提供更多帮助,但它看起来像您没有正确宣布您的活动。

它应该像这样设置:

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name="Activity1"></activity>
    <activity android:name="Activity2"></activity>
    <activity android:name="Activity3"></activity>
</application>

基本上,创建一个应用程序声明,然后在其中包含每个活动。