0

私は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 がランチャーからの自身のインテントに応答することがわかります。

アプリの最後のアクティビティが設定であったかどうかに関係なく、ホーム インテントによってユーザーが直接ランチャーに移動するようにするにはどうすればよいですか?

4

2 に答える 2

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>
于 2013-01-06T02:51:34.893 に答える
0

私は別の質問で解決策を与えられました:

ホーム インテントを特定のアプリケーション アクティビティに移動させますか?

--

ホーム画面の代替を作成しようとしている場合は、そのアクティビティのマニフェストのタグに次のものが必要です。

android:launchMode="singleInstance"

これにより、このアクティビティのインスタンスが 1 つだけ存在し、このアクティビティが他のアクティビティを開始したときに、それらがすべて新しいタスクに入り、ホーム画面の置き換えのタスクの一部にならないことが保証されます。

于 2013-01-08T03:47:27.860 に答える