android sharedpreferences教學 - 從屏幕上刪除/隱藏首選項




5 Answers

是的,如果您對Preference及其父項( PreferenceCategoryPreferenceScreen )都有參考,

myPreferenceScreen.removePreference(myPreference);
android儲存資料 preferences在哪

我有一個擴展PreferenceActivity的活動。 我從XML文件加載首選項。 但在某些情況下,我需要根據我的應用程序狀態完全隱藏屏幕上的某個偏好設置。 有一個setEnabled方法,但它不完全是我想要的。 我想從屏幕上完全刪除該偏好。 可能嗎 ?




在首選項是首選項屏幕的直接子項的情況下,以下是一些獨立代碼:

PreferenceScreen screen = getPreferenceScreen();
Preference pref = getPreferenceManager().findPreference("mypreference");
screen.removePreference(pref);



在你的XML文件中:

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

<PreferenceCategory
android:key="personalisation"
android:title="your title here">

<ThemedPreference
android:key="animation" />

</PreferenceScreen>

在你的代碼中:

PreferenceScreen pPreferenceScreen = (PreferenceScreen) findPreference("preferenceScreen");

PreferenceCategory pCategory = (PreferenceCategory) findPreference("personalisation");
ThemedPreference pThemePref = (ThemedPreference) findPreference("animation");

pPreferenceScreen.removePreference(pCategory); //remove category
pCategory.removePreference(pThemePref);   // remove preference



無論首選項是在PreferenceCategory還是PreferenceScreen下,這都是通用的方法。

private void removePreference(Preference preference) {
    PreferenceGroup parent = getParent(getPreferenceScreen(), preference);
    if (parent == null)
        throw new RuntimeException("Couldn't find preference");

    parent.removePreference(preference);
}

private PreferenceGroup getParent(PreferenceGroup groupToSearchIn, Preference preference) {
    for (int i = 0; i < groupToSearchIn.getPreferenceCount(); ++i) {
        Preference child = groupToSearchIn.getPreference(i);

        if (child == preference)
            return groupToSearchIn;

        if (child instanceof PreferenceGroup) {
            PreferenceGroup childGroup = (PreferenceGroup)child;
            PreferenceGroup result = getParent(childGroup, preference);
            if (result != null)
                return result;
        }
    }

    return null;
}



在XML文件中,您可以通過將標題和摘要標籤留空來製作隱藏偏好設置。

<EditTextPreference
    android:defaultValue="toddlerCam"
    android:key="save_photo_dir"
/>



Related

android preferences