Установить Intent-flags для PreferenceScreen в XML - PullRequest
6 голосов
/ 24 мая 2011

Мое PreferencesActivity представление заполнено через XML, и в этом XML я включил PreferencesScreen, чтобы перейти к системным предпочтениям синхронизации. Он работает нормально, используя код ниже.

Моя проблема / вопрос в том, что, когда я открыл «Настройки синхронизации», открыл домашний экран, а затем снова открыл свое приложение, настройки синхронизации открыты, потому что они лежат на вершине стека. Есть ли возможность включить NEW_TASK-флаг в xml, чтобы сообщить экрану, что это новая задача, не связанная со стеком моего приложения?

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

1 Ответ

1 голос
/ 22 ноября 2012

Вы можете установить 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

...