2016-07-11 2 views
1

Si je désactive l'utilisation de setEnabled(false), le commutateur est (1) défini sur désactivé et (2) je n'obtiens pas de réponse du OnClickListener pour lancer une boîte de dialogue. Editer: Dans ce cas, je ne veux pas que l'interrupteur passe automatiquement de l'état "Marche" à l'état "Arrêt".Android - Désactiver SwitchPreference de changer d'état, mais obtenir une réponse de clic pour lancer la boîte de dialogue?

Est-ce que quelqu'un a traité ce problème?

Répondre

3

La solution était d'utiliser setChecked(true) à l'intérieur du rappel OnPreferenceClickListener puis de lancer la boîte de dialogue.

Remarque: cela ne fonctionnait pas dans le rappel OnPreferenceChangeListener.

+0

brillant! Merci: D – limlim

1

Pour ceux qui veulent le code:

if (!BuildConfig.FULL_VERSION) { 
      SwitchPreferenceCompat preference = (SwitchPreferenceCompat) findPreference(getString(R.string.pref_notifications_service_key)); 
      preference.setDefaultValue(false); 
      preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
       @Override 
       public boolean onPreferenceClick(Preference preference) { 
        ((SwitchPreferenceCompat) preference).setChecked(false); 
        new ProFeatureDialogFragment().show(getFragmentManager(), "PRO_FEATURE_TAG"); 
        return false; 
       } 
      }); 
     }