动态添加或删除CheckBoxPreferences(Android)

时间:2012-06-13 14:24:59

标签: android dynamic preferences checkboxpreference

我有一个城市列表,我希望用户可以选择其中一个城市将其添加到偏好设置中。为此,他继续使用CityActivity(代表一个城市),打开OptionMenu并选择“添加到收藏夹”。所有城市都有一个名称,一个ID和其他在这里不感兴趣的领域。

如果用户将城市添加到其收藏夹(通过optionsMenu =>“添加到收藏夹”),我希望PreferenceCategory“收藏夹”中出现一个复选框(已在我的PreferenceScreen中创建,但默认情况下为空)。如果选中或不选中复选框,我将应用特定处理(这不是问题)。

最后,如果用户再次进入城市并选择“从收藏夹中移除”,则具有城市名称的checkBoxPreference必须消失...

我在SO上搜索了很长时间,但从来没有找到解决这个问题的解决方案......或者我不理解。

我目前的消息来源:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="appSettings"
android:title="Préférences" >

<PreferenceCategory android:title="Accueil" >
    <ListPreference
        android:defaultValue="6"
        android:entries="@array/nbNewsTitles"
        android:entryValues="@array/nbNewsValues"
        android:key="nbNews"
        android:summary="Définit le nombre de news à afficher sur l&apos;onglet d&apos;accueil"
        android:title="Nombre de news" />
</PreferenceCategory>
<PreferenceCategory android:title="Modèles" >
    <ListPreference
        android:entries="@array/quickTitles"
        android:entryValues="@array/quickValues"
        android:key="navigationRapide"
        android:summary="Définit le nombre d&apos;échéances à sauter lors de la navigation rapide"
        android:title="Navigation rapide" />
</PreferenceCategory>
<PreferenceCategory android:title="Général" >
    <CheckBoxPreference
        android:defaultValue="false"
        android:enabled="true"
        android:key="doubleTapMenu"
        android:summary="Affiche le menu lors d&apos;actions spécifiques sur l&apos;écran."
        android:title="Magic Menu" />
</PreferenceCategory>
<PreferenceCategory
    android:key="favoris"
    android:title="Prévisions par villes" >
</PreferenceCategory>

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.settings); 

}

1 个答案:

答案 0 :(得分:1)

您可以从您的preferenceScreen中有选择地添加和删除CheckBoxPreference。

IE

//please note that this is depreciated in new fragment based preference screens
PreferenceScreen mPreferenceScreen = getPreferenceScreen();
mPreferenceScreen.remove(mPreferenceScreen.findPreferenec("thatPreferenceKey"));

然后通过动态创建CheckBoxPreference然后将其添加到perferenceScreen来添加。

mPreferenceScreen.addPreference(yourCBP);