checkboxpreference中的多重依赖关系android或listpreference的依赖关系

sxa*_*nus 5 android preferences checkboxpreference listpreference

例如:我的首选项屏幕中有三个复选框,listpreference(A,B,C)每个复选框有3个不同的复选框.我想让用户一次只选择一个复选框.我如何实现这一目标?

  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"
    
    Run Code Online (Sandbox Code Playgroud)

这个Listprefrence的数组是"蓝色","红色","白色"

如果是蓝色ListPreference A取决于蓝色

如果它是红色ListPreference B依赖于红色

如果是白色ListPreference C取决于白色

我怎样才能做到这一点?

我在谷歌搜索3-4页,这里几乎所有关于这些,但我找不到任何答案.

最好的祝福,

提前致谢..

GrA*_*And 14

您可以onSharedPreferenceChangedPreferenceActivity类中覆盖并以编程方式启用/禁用适当的首选项:

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
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)