gpt4 book ai didi

android - OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 有什么不同

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:30 24 4
gpt4 key购买 nike

我想获取复选框首选项的值。哪种方法适合收听偏好?

OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 之间的真正区别是什么?!

更新为什么不调用 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
}
});

如果您使用 fragment ,方法 findPreference 将不起作用,但您没有使用任何 fragment ,所以没问题。

关于android - OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com