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()
が起こる中にスイッチがオンに切り替わります。これをどうやって回避するのですか?
あなたのif文の外にスイッチを入れてみてください、と ''(newValに)setCheckedを使用することです。 –
私はそれをfalseに設定したいのですが、 'newVal'がtrueの時に設定します。 – user2892437
'newVal'の反対に設定したい場合は、' setChecked(!newVal) 'を実行してください。 –