动态添加或删除CheckBoxPreferences(Android)

动态添加或删除CheckBoxPreferences(Android),android,dynamic,preferences,checkboxpreference,Android,Dynamic,Preferences,Checkboxpreference,我有一个城市列表,我希望用户可以选择其中一个城市将其添加到首选项中。为此,他打开CityActivity(代表一个城市),打开选项菜单并选择“添加到收藏夹”。所有的城市都有一个名字,一个ID和其他不感兴趣的字段 如果用户将城市添加到其收藏夹(通过选项菜单=>“添加到收藏夹”),我希望在首选项类别“收藏夹”(已在我的首选项屏幕中创建,但默认为空)中显示一个复选框。如果复选框被选中或未选中,我将应用特定的处理(这不是这里的问题) 最后,如果用户再次进入城市并选择“从收藏夹中删除”,则带有城市名称的复

我有一个城市列表,我希望用户可以选择其中一个城市将其添加到首选项中。为此,他打开CityActivity(代表一个城市),打开选项菜单并选择“添加到收藏夹”。所有的城市都有一个名字,一个ID和其他不感兴趣的字段

如果用户将城市添加到其收藏夹(通过选项菜单=>“添加到收藏夹”),我希望在首选项类别“收藏夹”(已在我的首选项屏幕中创建,但默认为空)中显示一个复选框。如果复选框被选中或未选中,我将应用特定的处理(这不是这里的问题)

最后,如果用户再次进入城市并选择“从收藏夹中删除”,则带有城市名称的复选框首选项必须消失

我搜索了很长一段时间,但始终没有找到这个问题的确切解决方案……或者我不明白

我目前的资料来源:

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

您可以有选择地从首选项屏幕中添加和删除复选框首选项

然后通过动态创建复选框首选项,然后将其添加到perferenceScreen来进行添加

mPreferenceScreen.addPreference(yourCBP);

好啊我知道这些方法可以将CheckBoxPreference添加到我的PreferenceCategory中,但我不知道当用户将城市添加到CityActivity(完全独立)中的收藏夹时如何调用它。这些方法在我的首选活动中,而addToFavorite方法在“城市活动”中。。。也许我很笨,但我不知道怎么做……如果你想坚持使用偏好活动(我认为listview“可能”更适用),你会想将你的城市信息存储到某种商店,比如SharedRefers。初始化PreferenceActivity时,请在运行时创建复选框首选项,每个元素对应一个首选项(从存储中读取),然后附加到PreferenceScreen,然后附加到activity。虽然已弃用,但此代码仅在ICS之前有效。不适用于果冻豆,必须使用PreferenceFragment。
//please note that this is depreciated in new fragment based preference screens
PreferenceScreen mPreferenceScreen = getPreferenceScreen();
mPreferenceScreen.remove(mPreferenceScreen.findPreferenec("thatPreferenceKey"));
mPreferenceScreen.addPreference(yourCBP);