0

J'essaie d'utiliser SwitchPreference et d'essayer de détecter son état en utilisant la méthode isEnabled().SwitchPreference.isEnabled() ne pas détecter si activé/désactivé correctement

est ici le code (en 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); 
    } 

Le problème est que le Toast avec le texte « Activé » est apparaître, peu importe si l'interrupteur à « ON » ou « OFF ».

Qu'est-ce qui pourrait ne pas fonctionner ici?

Répondre

0

Oups! J'aurais dû l'essayer avant de poster la question. Quoi qu'il en soit, je résolu le problème en modifiant:

fPref.isEnabled() 

à ceci:

fPref.isChecked()