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侦听器?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)