0

我有一个城市列表,我希望用户可以选择其中一个城市将其添加到偏好中。为此,他继续 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); 

}
4

1 回答 1

1

您可以从您的偏好屏幕中选择性地添加和删除 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);
于 2012-06-13T14:33:29.463 回答