2011-03-30 4 views
5

예를 들면 : 내 환경 설정 화면에 세 개의 확인란이 있으며 각 확인란마다 3 가지 다른 listpreference(A,B,C)이 있습니다. 사용자가 한 번에 하나의 확인란 만 선택하게하고 싶습니다. 어떻게 이것을 달성합니까?checkboxpreference 안드로이드 또는 listpreference의 종속성에 여러 종속성이 있습니다

  1. 기본 설정 화면

  2. 내가이 Listprefrence의

    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" 
    

배열은 "블루"입니다 사용할 수 있는지가, Listpreference을 사용할 수 없습니다에는 라디오 버튼이 없습니다, "적색", "백색"

푸른 색이면,ListPreference A는이 ListPreference의 B 빨간색이 ListPreference C 흰색 인 경우 빨간색

에 의존하는 경우 파란색

에 따라 내가이 작업을 수행 할 수있는 방법 흰색

에 따라 달라집니다?

Google에서 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

+0

이 경우에는 제 답변을 승인 된 것으로 표시하십시오. :) – GrAnd