2011-03-30 40 views
5

例如:我在我的首選項屏幕上有三個複選框,並且有3個不同的listpreference(A,B,C)取決於每個複選框。我想讓用戶一次只選擇一個複選框。我如何實現這一目標?checkboxpreference android或listpreference的依賴項的多重依賴

  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頁在谷歌和這裏幾乎所有關於這些,但我找不到任何答案。

最好的問候,提前

謝謝..

回答

13

您可以在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 
      } 
     } 
    } 
+0

感謝很多!這是我試圖弄清楚的解決方案。 – sxanus 2011-03-30 10:10:47

+0

在這種情況下,將我的答案標記爲已接受。 :) – GrAnd 2011-03-30 10:41:14