2012-06-13 45 views
0

我有一個城市列表,我希望用戶可以選擇其中一個城市將其添加到偏好設置中。要做到這一點,他繼續CityActivity(代表一個城市),打開OptionMenu並選擇「添加到最愛」。所有的城市都有一個名字,一個ID和其他字段在這裏沒有意思。如果用戶將一個城市添加到其收藏夾(通過optionsMenu =>「添加到收藏夾」),我希望複選框出現在PreferenceCategory「收藏夾」(已在我的PreferenceScreen中創建,但默認爲空)。如果複選框被選中,我將應用特定的處理(這不是問題)。動態添加或刪除CheckBoxPreferences(Android)

最後,如果用戶去城市再次,選擇「從收藏夾刪除」,我搜索了很久的SO,但從來沒有擁有這個城市必須消失的名稱checkBoxPreference ...

發現這個問題的解決方案......或者我不明白。

我的電流源:

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

您可以選擇性添加並從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); 
+0

好的。我知道這些方法將CheckBoxPreference添加到我的PreferenceCategory中,但我不知道如何在CityActivity(這是完全獨立的)中將一個城市添加到最喜歡的城市時調用它。這些方法在我的PreferenceActivity中,而方法addToFavorite在「CityActivity」中......也許我很笨,但我不知道該怎麼做... – QLag

+0

那麼如果你想堅持一個偏好活動(我認爲一個列表視圖「可能」更適用),您將需要將您的城市信息存儲到某種商店,共享偏好等。當您初始化PreferenceActivity時,會在運行時創建您的複選框首選項,每個元素需要一個(從商店讀取),然後附加到PreferenceScreen然後附加到活動。 – Jug6ernaut

+0

好的,謝謝,其實這很容易...對我感到羞恥:) – QLag