【问题标题】:Home intent launching SettingsActivity instead of MainActivity?主页意图启动 SettingsActivity 而不是 MainActivity?
【发布时间】:2013-01-06 01:53:17
【问题描述】:

我正在 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>

您可以看到 Launcher 响应 home intent,而 SettingsActivity 从启动器响应它自己的 intent。

如何确保主页意图将用户直接带到启动器,无论应用的最后一个活动是否已设置?

【问题讨论】:

    标签: java android eclipse


    【解决方案1】:

    这是因为您已将设置活动设置为启动器。

    试试这个,

    <!-- 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>
    

    【讨论】:

      【解决方案2】:

      我得到了另一个问题的解决方案:

      Make home intent take to specific application activity?

      --

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

      android:launchMode="singleInstance"
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-20
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        • 2017-03-13
        相关资源
        最近更新 更多