Home intent启动SettingsActivity而不是MainActivity?

时间:2013-01-06 01:53:17

标签: java android eclipse

我正在使用eclipse上的android启动器,该软件包包含MainActivity,它是启动器本身和SettingsActivity。

我的问题是,如果我打开设置页面,转到其他地方,我点击主页按钮,我会进入设置页面(而不是直接进入MainActivity),就像它记得我已经打开了设置。

这是AndroidManifest.xml文件的摘录:

<!-- Launcher-->
<activity
    android:name=".launcher.MainActivity"
    android:exported="false"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
<!-- Settings -->
<activity
    android:name=".launcher.SettingsActivity"
    android:label="@string/launcher_settings_name"
    android:theme="@style/android:Theme.DeviceDefault" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

你可以看到启动器响应了家庭意图,而SettingsActivity会从启动器响应它自己的意图。

如果应用的最后一项活动是否已经设置,我怎样才能确保家庭意图将用户直接带到启动器?

2 个答案:

答案 0 :(得分:3)

因为您已将“设置”活动设置为启动器。

试试这个,

<!-- Launcher-->
<activity
    android:name=".launcher.MainActivity"
    android:exported="false"
    android:label="@string/app_name" >
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Settings -->
<activity
    android:name=".launcher.SettingsActivity"
    android:label="@string/launcher_settings_name"
    android:theme="@style/android:Theme.DeviceDefault" >
 <intent-filter>
    <action android:name="android.intent.action.MAIN" />
  </intent-filter>
</activity>

答案 1 :(得分:0)

我在另一个问题上获得了解决方案:

Make home intent take to specific application activity?

-

如果您尝试创建HOME屏幕替换,那么该活动需要在清单中的标记中包含以下内容:

android:launchMode="singleInstance"

这将确保只存在此活动的一个实例,并且当此活动启动其他活动时,它们将全部进入新任务而不是HOME屏幕替换任务的一部分。