Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Home intent启动设置活动而不是Main活动?_Java_Android_Eclipse - Fatal编程技术网

Java Home intent启动设置活动而不是Main活动?

Java Home intent启动设置活动而不是Main活动?,java,android,eclipse,Java,Android,Eclipse,我正在eclipse上开发一个android launcher,这个包包含ST MainActivity,它是launcher本身和SettingsActivity 我的问题是,如果我打开“设置”页面,转到其他地方,然后单击“主页”按钮,我就会进入“设置”页面(而不是直接进入MainActivity),就像它记得我打开了“设置” 这是AndroidManifest.xml文件的摘录: <!-- Launcher--> <activity android:name=".l

我正在eclipse上开发一个android launcher,这个包包含ST MainActivity,它是launcher本身和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>

您可以看到启动器响应home意图,而SettingsActivity响应启动器自身的意图


无论应用程序的最后一个活动是否为设置,我如何确保home intent将用户直接带到启动器?

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

试试这个

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

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

试试这个

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

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

--

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

android:launchMode="singleInstance"

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

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

--

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

android:launchMode="singleInstance"
这将确保此活动仅存在一个实例,并且当此活动启动其他活动时,它们都将进入新任务,而不是主屏幕替换任务的一部分