2011-10-13 34 views
9

私はCheckBoxPreferenceとその他2つを持っています:1つはEdit Prefです。もう1つはListBox Prefです。どうすればいいですかリストボックスの設定を有効にしてを無効にします編集のテキストpref。 CheckBoxPreferenceがオンになっているときAndroid CheckBoxPreference:環境設定変更で他の環境設定を無効にして有効にする方法

また
boolean isEnabled = sharedPreferences.getBoolean(key, true); 
getPreferenceScreen().findPreference("list box preference key").setEnabled(isEnabled); 
getPreferenceScreen().findPreference("list box preference key").setEnabled(!isEnabled); 

、あなたの好みは、適切な初期設定を選別持ってonCreate()で同じ操作を行います。

答えて

31

は、それはあなたがpublic void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key)を無効にし、それがkey.equals(<Your key for setting>)で呼び出されるときのような何かを行うことができますthis question

の重複だようです。

3

チェックボックスの値を取得できます。次に、設定を有効/無効にするには、pref.setEnabled(false);を使用します。有効にするには、同じ機能を使用して真の値を入力します。

24

変形として、「依存関係」をListBoxPrefに入れることができます。

<PreferenceCategory 
android:key="key1" 
android:title="@string/title1"> 
<SwitchPreference 
    android:key="parents" 
    android:summaryOff="@string/do_smthng" 
    android:summaryOn="@string/do_smthng" 
    android:switchTextOff="@string/i_am_sleeping" 
    android:switchTextOn="@string/i_have_free_time" /> 
<CheckBoxPreference 
    android:key="baby" 
    android:dependency="parents" 
    android:title="@string/basic_habbits" 
    android:summaryOff="@string/play_with_parents" 
    android:summaryOn="@string/play_with_parents" 
    android:defaultValue="true" /> 
</PreferenceCategory> 

基本的に、あなたは素晴らしい先生です

+0

、彼らが眠っている両親=)で再生することはできません赤ちゃん! – Mohamed

+0

まさに私が探していたもの...自分のコードで使用を無効にしましたが、無効になっていることをユーザーに示す必要がありました。 – ShadowZzz