我有一个城市列表,我希望用户可以选择其中一个城市将其添加到首选项中。为此,他进入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'onglet d'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'é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'actions spécifiques sur l'é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);