Android – OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么不同

Android – OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么不同,第1张

概述我想获得一个checkboxpreference的值.哪种方法适合倾听偏好? OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么区别? UPDATE 为什么onSharedPreferenceChanged没有被调用? public class Setting extends PreferenceActivity imp 我想获得一个checkBoxpreference的值.哪种方法适合倾听偏好?

OnPreferencechangelistener和OnSharedPreferencechangelistener之间有什么区别?

UPDATE
为什么onSharedPreferenceChanged没有被调用?

public class Setting extends PreferenceActivity implements        OnSharedPreferencechangelistener //,OnPreferencechangelistener{    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        addPreferencesFromresource(R.xml.preferences);// deprecated warning    }    @OverrIDe    public voID onSharedPreferenceChanged(            SharedPreferences sharedPreferences,String key) {// DO Stuff    }    @OverrIDe    protected voID onResume() {        super.onResume();        // getPreferenceScreen().getSharedPreferences().registerOnSharedPreferencechangelistener(this);        // PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferencechangelistener(this);        this.getSharedPreferences("myPrefdb",MODE_PRIVATE)                .registerOnSharedPreferencechangelistener(this);    }    @OverrIDe    protected voID onPause() {        super.onPause();        // getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferencechangelistener(this);        // PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferencechangelistener(this);        this.getSharedPreferences("myPrefdb",MODE_PRIVATE)                .unregisterOnSharedPreferencechangelistener(this);    }}
解决方法 这两个之间的区别在于OnPreferencechangelistener是仅当其首选项更改(仅适用于单个密钥)时调用的回调),而OnSharedPreferenceChange是在该SharedPreferences对象中的任何首选项更改(仅适用于所有键)时调用的回调.

所以,在你的情况下,你需要使用OnPreferencechangelistener与你的CheckBoxPreference.

这是一个例子:

Preference ckBoxPref = this.findPreference(CKBox_PREF_KEY);ckBoxPref.setonPreferencechangelistener(new OnPreferencechangelistener() {    @OverrIDe    public boolean onPreferenceChange(Preference preference,Object newValue) {        //Do stuff    }});

如果您使用片段,findPreference方法不起作用,但是您没有使用任何内容,所以没有问题.

总结

以上是内存溢出为你收集整理的Android – OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么不同全部内容,希望文章能够帮你解决Android – OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么不同所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1131636.html

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

发表评论

登录后才能评论

评论列表(0条)

保存