Gyo*_*der 15 android android-manifest
我想在我的应用程序中有两个主要活动.所以在我的清单中我说:
<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>
Run Code Online (Sandbox Code Playgroud)
我的应用程序菜单中创建了两个图标.但是当我点击它们时,第一个活动MainActivity总是会启动.是否可以进行两项主要活动?如果是这样,我做了什么错了?谢谢
Sha*_*ade 18
该LAUNCHER意图过滤器是什么决定了应用程序的抽屉/发射器中显示的内容.这就是为什么你会看到两个图标.
但是,您还设置了DEFAULTintent过滤器,它设置Activity整个包的默认值.由于您设置了两次,因此您会遇到第一个/最新注册的优先级问题.当您删除DEFAULT过滤器时,您将能够启动您在启动器中单击的任何内容.
简而言之,从两个活动中删除以下行:
<category android:name="android.intent.category.DEFAULT" />
Run Code Online (Sandbox Code Playgroud)
poi*_*oae 13
是的,只需在你的清单中标记两个或更多你<activity>的LAUNCHER.
此外,您必须android:taskAffinity在两个Launcher-Activities上设置属性,该属性指定要启动的确切包和活动.
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20530 次 |
| 最近记录: |