Скрыть экран предпочтений в Android - PullRequest
3 голосов
/ 02 сентября 2011

У меня есть настройки xml ..

Сначала я загружаю настройки из ресурса XML

 addPreferencesFromResource(R.xml.preferences); 

и устанавливаю для него некоторые значения по умолчанию ... После установки значений по умолчанию,мне нужно скрыть (не удалить) один из моих экранов предпочтений

Мой XML-код предпочтений

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Preference
                android:title="Account Settings"
                 android:key="customPref" />

    <PreferenceScreen android:title="@string/account_1"
                    android:key="account">
            <EditTextPreference
                android:key="username"
                android:title="@string/settings_username"
                android:singleLine="true" />
            <EditTextPreference
                android:key="password"
                android:title="@string/settings_password"
                android:password="true"
                android:singleLine="true" />
                </PreferenceScreen>


    <PreferenceScreen android:title="@string/account_2"
                android:key="account1">
            <EditTextPreference
                android:key="username1"
                android:title="@string/settings_username"
                android:singleLine="true" />
            <EditTextPreference
                android:key="password1"
                android:title="@string/settings_password"
                android:password="true"
                android:singleLine="true" />
                </PreferenceScreen>
</PreferenceScreen>

Мне нужно скрыть PreferenceScreen, имеющий

title ="@string/account_2

Ответы [ 3 ]

3 голосов
/ 30 октября 2014

просто как:

Preference preference = (Preference) findPreference("pref");
PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference("pref_screen");
PreferenceCategory preferenceCategory = (PreferenceCategory) findPreference("pref_category");

Чтобы скрыть предпочтение:

PreferenceGroup preferenceParent = getParent(preference);
preferenceParent.removePreference(preference);

Чтобы скрыть экран настроек:

PreferenceGroup preferenceScreenParent = getParent(preferenceScreen);
preferenceScreenParent.removePreference(preferenceScreen);

Чтобы скрыть категорию предпочтений:

PreferenceGroup preferenceCategoryParent = getParent(preferenceCategory);
preferenceCategoryParent.removePreference(preferenceCategory);

То же самое происходит с EditTextPreference, CheckBoxPreference, .....

2 голосов
/ 02 сентября 2011

Вы можете скопировать свой XML. Затем удалите вторую часть следующим образом:

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Preference
                android:title="Account Settings"
                 android:key="customPref" />

    <PreferenceScreen android:title="@string/account_1"
                    android:key="account">
            <EditTextPreference
                android:key="username"
                android:title="@string/settings_username"
                android:singleLine="true" />
            <EditTextPreference
                android:key="password"
                android:title="@string/settings_password"
                android:password="true"
                android:singleLine="true" />
                </PreferenceScreen>
</PreferenceScreen>

Затем вы проверяете свои предпочтения, чтобы убедиться, что они уже инициализированы.

Если да, вы загружаете XML выше, в противном случае первый.

0 голосов
/ 02 сентября 2011

Если у вас есть ссылка как на Предпочтение, так и на его родителя (PreferenceCategory или PreferenceScreen)

myPreferenceScreen.remove(myPreference);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...