0

Ich versuche, SwitchPreference zu verwenden und versuchen, seinen Zustand zu ermitteln, isEnabled() Methode zu verwenden.SwitchPreference.isEnabled() nicht erkennen, ob aktiviert/deaktiviert richtig

Hier ist der Code (in SettingsActivity.java):

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     getDelegate().installViewFactory(); 
     getDelegate().onCreate(savedInstanceState); 
     super.onCreate(savedInstanceState); 

     spChanged = new 
       SharedPreferences.OnSharedPreferenceChangeListener() { 
        @Override 
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
                  String key) { 
         // your stuff here 
         if (key.equals(KEY_ENABLE_F)) { 
          SwitchPreference fPref = (SwitchPreference) findPreference(key); 
          if (fPref.isEnabled()) { 
           Toast.makeText(getBaseContext(), "Enabled", Toast.LENGTH_SHORT).show(); 
          } else { 
           Toast.makeText(getBaseContext(), "Disabled", Toast.LENGTH_SHORT).show(); 
          } 
         } 
        } 
       }; 
    } 

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

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

Das Problem ist, dass die Toast mit dem Text "Enabled" egal zeichnet sich ab, wenn der Schalter in 'EIN' oder 'AUS'.

Was könnte hier falsch sein?

Antwort

0

Whoops! Ich hätte es ausprobieren sollen, bevor ich die Frage gepostet habe. Wie auch immer, ich löste das Problem durch eine Änderung:

fPref.isEnabled() 

dazu:

fPref.isChecked()