2012-07-31 21 views
6

チェック状態がCheckBoxPreferenceに基づいて、設定サマリーが変更されるアプリケーションを作成しようとしています。チェック状態に基づいてCheckBoxPreferenceサマリーを変更します。

良い古いisChecked()が機能しないため、どのようにプリファレンスを照会するのかよくわかりません。あなたは自分の好みのレイアウトにandroid:summaryOffandroid:summaryOnを使用した場合

+0

http://developer.android.com/reference/android/preference/CheckBoxPreference.htmlがどのように 'にisChecked()'は動作しませんか?あなたのコードを投稿してください。 – biegleux

答えて

17

は、はるかに簡単だろう。コードは不要です。例えば:

<CheckBoxPreference 
     android:enabled="true" 
     android:key="alerts" 
     android:title="Alerts" 

     android:summaryOn="You will get notified when something interesting happens" 
     android:summaryOff="You will not be notified" 
     /> 

参照:

1
public class Preferences extends PreferenceActivity 
     implements OnSharedPreferenceChangeListener { 

    public final static String KEY_CHECK = "check"; 
    private CheckBoxPreference mCheckBoxPreference; 

    @Override 
    public void onCreate(Bundle savedInstance) { 
     super.onCreate(savedInstance); 
     addPreferencesFromResource(R.xml.preferences); 
     mCheckBoxPreference = (CheckBoxPreference) getPreferenceScreen() 
      .findPreference(KEY_CHECK); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     getPreferenceScreen().getSharedPreferences() 
      .registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     getPreferenceScreen().getSharedPreferences() 
      .unregisterOnSharedPreferenceChangeListener(this); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
      String key) { 
     if (key.equals(KEY_CHECK)) { 
      if (mCheckPreference.isChecked()) { 
       mCheckPreference.setSummary(mCheckPreference.getEntry()); 
      } 
     } 
    } 
} 
+0

あなたのコードでは、onSharedPreferenceChangeListnerが不明なエンティティであるというエラーが表示されています。何故ですか? – SweSnow

+0

'import android.content.SharedPreferences.OnSharedPreferenceChangeListener;をインポートしましたか?代わりに 'SharedPreferences.OnSharedPreferenceChangeListener'を使用しようとします。 – biegleux

関連する問題