2012-07-31 7 views

Odpowiedz

17

byłoby znacznie prostsze, jeśli tylko używane android:summaryOff i android:summaryOn w układzie preferencji. Nie wymaga kodu. Np:

<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" 
     /> 

Patrz: http://developer.android.com/reference/android/preference/CheckBoxPreference.html

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

Twój kod daje mi błędy mówiąc, że onSharedPreferenceChangeListner jest nieznanym bytem. Dlaczego? – SweSnow

+0

Zaimportowałeś 'import android.content.SharedPreferences.OnSharedPreferenceChangeListener;'? lub spróbuj użyć 'SharedPreferences.OnSharedPreferenceChangeListener' zamiast tego. – biegleux