0

都市のリストがあり、ユーザーがこれらの都市の 1 つを選択して設定に追加できるようにしたいと考えています。それを行うには、CityActivity (1 つの都市を表す) に移動し、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 に答える