android – 为什么自定义DialogPreference不会触发onSharedPreferenceChanged侦听器?

android – 为什么自定义DialogPreference不会触发onSharedPreferenceChanged侦听器?,第1张

概述我正在尝试在首选项中创建对话框首选项,用户只需单击“正向”按钮即可触发某些 *** 作. (清除数据库?否|是) public class MyDialogPreference extends DialogPreference { public MyDialogPreference(Context context, AttributeSet attrs) { super(cont 我正在尝试在首选项中创建对话框首选项,用户只需单击“正向”按钮即可触发某些 *** 作. (清除数据库?否|是)

public class MyDialogPreference extends DialogPreference {    public MyDialogPreference(Context context,AttributeSet attrs) {        super(context,attrs);        // Todo auto-generated constructor stub    }    @OverrIDe    protected voID onDialogClosed(boolean positiveResult) {        super.onDialogClosed(positiveResult);        Log.d(MainActivity.TAG,"# onDialogClosed: " + positiveResult);    }}

我实际上并不想坚持任何东西,只是触发onSharedPreferenceChanged监听器,所以我可以在活动中处理它.但我无法弄清楚如何触发它

//解

@OverrIDeprotected voID onDialogClosed(boolean positiveResult) {    super.onDialogClosed(positiveResult);    if(positiveResult) {        persistBoolean(!getPersistedBoolean(true));    }    Log.d(MainActivity.TAG,"# onDialogClosed: " + positiveResult);}
解决方法 由于在共享首选项上注册了内置回调,因此调用onSharedPreferenceChanged,因此除非您更改与dialogPreference关联的键,否则您将不会获得onSharedPreferenceChanged回调.

所以你可以做的是每次关闭对话框,你可以改变key中的值.像下面的东西

text = getPersistedString("1")if(text.length() > 10)   text = "1";persistString(text+"1");

确保你的dialogPreference在xml中有一个键和androID:persistent为true

总结

以上是内存溢出为你收集整理的android – 为什么自定义DialogPreference不会触发onSharedPreferenceChanged侦听器?全部内容,希望文章能够帮你解决android – 为什么自定义DialogPreference不会触发onSharedPreferenceChanged侦听器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存