动态添加或删除复选框首选项 (Android)



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

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

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

我在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); 
}

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

IE

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

然后通过动态创建复选框首选项并将其添加到引用屏幕来添加。

mPreferenceScreen.addPreference(yourCBP);

相关内容

  • 没有找到相关文章

最新更新