onSharedPreferenceChanged()侦听器没有要返回的布尔类型,因为onPreferenceChanged()侦听器具有.
那么如何在验证后拒绝更改?
发生在我身上的唯一方法是将所有共享首选项保存在局部变量中,如果验证失败,则从局部变量中恢复该值,如果它通过则更新局部变量.
这是双重工作吗?是否存在拒绝的内置机制?
最佳答案
Is this doing double work?
我认同.如果代码的一部分要拒绝此更改,为什么代码的另一部分允许它?
Is there a built-in mechanism for reject?
用户输入应在onPreferenceChange中在提交之前进行验证.看起来onSharedPreferenceChanged的目的不是验证,而是在提交更改时接收只读实时更新.
由于其他代码可以接收此回调并对其执行操作,因此在此回调期间验证为时已晚.
参考(Preference javadoc):
This class provides the View to be displayed in the activity and associates with a SharedPreferences to store/retrieve the preference data