2011-03-30 15 views
5

Örneğin: Benim tercih ekranımda üç onay kutusu var ve her onay kutusuna bağlı 3 farklı listpreference(A,B,C) var. Kullanıcıyı her seferinde sadece bir onay kutusunu seçmek istiyorum. Bunu nasıl başarabilirim?checkboxpreference çoklu bağımlılık android veya listpreference bağımlılığı

  1. tercih ekranı

  2. ben bu Listprefrence ait

    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" 
    

Dizisi "mavi" dir kullanabilirsiniz eğer, Listpreference kullanamaz hiçbir radyo düğmesi yoktur, "kırmızı", "beyaz"

mavi ise ListPreference A, ListPreference B kırmızıdır o ListPreference C beyazsa kırmızı

bağlıdır eğer mavi

bağlıdır bunu yapmak nasıl beyaz

bağlıdır?

Google + 'da 3-4 sayfa arandım ve burada hemen hemen her şey hakkında ama hiçbir cevap bulamadım.

Saygılarımızla, önceden

Teşekkür ..

cevap

13

Sen PreferenceActivity sınıfında onSharedPreferenceChanged geçersiz kılmak ve programlı/devre dışı ayrılan Tercihler etkinleştirebilirsiniz:

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

sayesinde çok! Anlamaya çalıştığım çözüm bu .. – sxanus

+0

Bu durumda cevabımı kabul edildi olarak işaretleyin. :) – GrAnd

İlgili konular