我想在我的应用程序中有两个主要活动。所以在我的清单中我说:
<activity
android:name="mypackage1.MainActivity"
android:label="@string/title_activity_main">
<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>
<activity
android:name="mypackage2.MainActivity2"
android:label="@string/title_activity_main2">
<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>
我的应用程序菜单中创建了两个图标。但是当我点击它们时,第一个活动MainActivity总是会启动。是否可以进行两项主要活动?如果是这样,我做了什么错了?谢谢
LAUNCHER
意图过滤器决定了应用程序抽屉/启动器中显示的内容。这就是为什么你会看到两个图标。
但是,您还设置了DEFAULT
intent过滤器,它为整个包设置了默认的Activity
。由于您设置了两次,因此您会遇到第一个/最新注册的优先级问题。当您删除DEFAULT
过滤器时,您将能够启动您在启动器中单击的任何内容。
简而言之,从两个活动中删除以下行:
<category android:name="android.intent.category.DEFAULT" />
是的,只需在你的清单中将两个或更多的<activity>
s标记为LAUNCHER
。此外,您必须在两个Launcher-Activities上设置android:taskAffinity
属性,该属性指定要启动的确切包和活动。
<activity android:label="MyApp" android:name=".MyApp" android:taskAffinity="com.example.MainActivity">
<intent-filter>
<action android:name=".MyApp"/>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:label="Settings" android:name=".Settings" android:taskAffinity="com.example.SettingsActivity" >
<intent-filter>
<action android:name=".Settings"/>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>