Mac*_*rse 5 android android-preferences
我知道我可以这样做:
Preference pref = findPreference(getString(R.string.pref_vibrate_on_key));
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
LogUtil.d("Working!");
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
但我想为每个偏好添加一个Listener.我试过做:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
LogUtil.d("working!");
}
});
Run Code Online (Sandbox Code Playgroud)
但它不起作用.这可能吗?如果是这样,我做错了什么?
假设您希望每次都调用相同的侦听器,这可能是一个更简单的解决方案:
Preference.OnPreferenceChangeListener changeListener = new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
// Code goes here
return true;
}
};
EditTextPreference pref = (EditTextPreference)findPreference(getString(R.string.pref1));
pref1.setOnPreferenceChangeListener(changeListener);
EditTextPreference pref2 = (EditTextPreference)findPreference(getString(R.string.pref2));
pref2.setOnPreferenceChangeListener(changeListener);
Run Code Online (Sandbox Code Playgroud)
我认为这onSharedPrefererenceChanged是在保存首选项时触发的(当您在 中单击 BACK 或 HOME 时PreferenceActivity)。我认为最简单的方法是创建单个类实现OnPreferenceChangeListener并切换Preference.getKey();并将其设置为OnPreferenceChangeListener每个首选项。
| 归档时间: |
|
| 查看次数: |
26229 次 |
| 最近记录: |