2017-01-20 3 views
0

私は基本的に次の操作を実行したい:Android - 切り替え時にSwitchPreferenceのチェックを外しますか?

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);は実行に表示されず、displaySettingsDialog()が起こる中にスイッチがオンに切り替わります。これをどうやって回避するのですか?

+0

あなたのif文の外にスイッチを入れてみてください、と ''(newValに)setCheckedを使用することです。 –

+0

私はそれをfalseに設定したいのですが、 'newVal'がtrueの時に設定します。 – user2892437

+0

'newVal'の反対に設定したい場合は、' setChecked(!newVal) 'を実行してください。 –

答えて

0

ソリューションはreturn false;代わりのtrue

関連する問題