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