6

PreferencesActivity的视图是通过 XML 填充的,并且在该 XML 中我包含了一个PreferencesScreen导航到系统的同步首选项。使用下面的代码可以正常工作。

我的问题/问题是,当我打开同步首选项时,打开主屏幕然后再次打开我的应用程序,同步设置被打开,因为它们位于堆栈的顶部。是否有可能在 xml 中包含 NEW_TASK 标志以告诉屏幕这是一个新任务并且与我的应用程序堆栈无关?

<PreferenceScreen
        android:title="@string/preferences_activity_syncaccounts_title"
        android:summary="@string/preferences_activity_syncaccounts_summary"
        android:dialogTitle="@string/preferences_activity_syncaccounts_title">
        <intent
            android:action="android.settings.SYNC_SETTINGS"/>
    </PreferenceScreen>
4

1 回答 1

1

您可以设置 android:launchMode="singleInstance"。在您的代码示例中,这将是:

    <PreferenceScreen
        android:title="@string/preferences_activity_syncaccounts_title"
        android:summary="@string/preferences_activity_syncaccounts_summary"
        android:dialogTitle="@string/preferences_activity_syncaccounts_title">
    <intent
        android:action="android.settings.SYNC_SETTINGS"
        android:launchMode="singleInstance" />
    </PreferenceScreen>

另一方面,“singleInstance”活动不允许其他活动成为其任务的一部分。这是任务中的唯一活动。如果它启动另一个活动,则该活动被分配给不同的任务——就好像 FLAG_ACTIVITY_NEW_TASK 在意图中一样。

你可以在这里阅读更多:http: //developer.android.com/guide/topics/manifest/activity-element.html#lmode

于 2012-11-22T15:24:12.217 回答