android 连续调用方法是,android – SwitchPreferences多次调用onPreferenceChange()方法

本文探讨了Android中SwitchPreference在连续调用onPreferenceChange()方法的原因,指出问题源于SwitchPreference的实现。当状态改变时,框架才会调用此回调。建议在回调内检查状态变化以避免冗余操作。示例代码展示了如何检查状态变化并防止不必要的保存。
摘要由CSDN通过智能技术生成

这是由于SwitchPreference实现中的错误.

调用onPreferenceChange回调:

>第一次通过TwoStatePreference.onClick方法,它只更新SharedPreference.

>第二次通过Switch小部件的切换状态. Here它被调用.

无法评论逻辑,但至少只有在状态发生变化时,框架才应该注意调用onPreferenceChange回调.所以责任在于我们.使用SwitchPreference.isChecked方法检查状态是否已更改.

public boolean onPreferenceChange(Preference preference, Object newValue) {

if(((SwitchPreference) preference).isChecked() != (Boolean) newValue) {

// State got changed

Log.i("Testing", preference.getKey() + " : " + String.valueOf(newValue));

// If you don't want to save the preference change return false from this if block.

}

return true;

}

这是callstack供您参考:

TwoStatePreference.onClick:

MainActivity$SettingsFragment$1.onPreferenceChange(Preference, Object) line: 45

SwitchPreference(Preference).callCh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值