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

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

  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取决于白色

我怎样才能做到这一点?

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

最好的祝福,

提前致谢..

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

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