5

例: 設定画面に 3 つのチェックボックスがありlistpreference(A,B,C)、各チェックボックスに応じて 3 つの異なるチェックボックスがあります。ユーザーに一度に1つのチェックボックスのみを選択させたい。どうすればこれを達成できますか?

  1. 設定画面にラジオボタンがない

  2. 私はそれを使用することができれば、私は Listpreference を使用することはできません

      ListPreference
        android:key="livewallpaper_testpattern"
        android:title="@string/livewallpaper_settings_title"
        android:summary="@string/livewallpaper_settings_summary"
        android:entries="@array/livewallpaper_testpattern_names"
        android:entryValues="@array/livewallpaper_testpattern_prefix"
    

この Listprefrence の配列は「青」、「赤」、「白」です

青の場合 ListPreference A は青に依存します

赤の場合 ListPreference B は赤に依存

それが白なら ListPreference C は白に依存する

これどうやってするの?

私はGoogleで3〜4ページを検索しましたが、ここではこれらに関するほとんどすべてのページを検索しましたが、答えが見つかりませんでした.

よろしくお願いします、

前もって感謝します..

4

2 に答える 2

15

クラスでオーバーライドonSharedPreferenceChangedし、PreferenceActivity適切な設定をプログラムで有効/無効にすることができます。

public class MyPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
    ...
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (key.equals("livewallpaper_testpattern")) {
            if (/* check if livewallpaper_testpattern equals to blue */) {
                findPreference("ListPreferenceKey_A").setEnabled(true);
                findPreference("ListPreferenceKey_B").setEnabled(false);
                findPreference("ListPreferenceKey_C").setEnabled(false);
            } else if (/* check if livewallpaper_testpattern equals to red */) {
                // enable B, disable A & C
            } else if (/* check id livewallpaper_testpattern equals to white */) {
                // enable C, disable A & B
            }
        }
    }
于 2011-03-30T09:38:04.307 に答える