2017-01-20 4 views
0

Je veux essentiellement faire ce qui suit:Android - décochez une SwitchPreference quand elle a été activée?

switch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       Boolean newVal = (Boolean) newValue; 
       if (newVal && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(getApplicationContext())) { 
        switch.setChecked(false); 
        displaySettingsDialog(); 
        return true; 
       } 

switch.setChecked(false); ne semble pas exécuter, et le commutateur basculera pendant que displaySettingsDialog() arrive. Comment puis-je contourner cela?

+0

Essayez de mettre l'interrupteur en dehors de votre instruction if et utilisez 'setChecked (newVal)'. –

+0

Je veux le mettre à false, cependant, et quand 'newVal' est vrai. – user2892437

+0

Si vous voulez le mettre à l'opposé de 'newVal', faites' setChecked (! NewVal) ' –

Répondre

0

La solution est de return false; au lieu de true