我有两个相关的偏好设置(units
和distance
)
当units
更改时,我想相应地转换distance
。例如,如果distance
1610 米且units
更改为里程,我想将其转换为 1 英里。
为此,我使用Android studio SettingsActivity代码提供的代码
但是,当distance
偏好更改时,如何找到units
偏好设置?
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();
...
// I need to address also the distance preference value here
// It is not the preference given in the arguments (units)
// The distance preference is in another preferences fragment
...
}
};
答案 0 :(得分:0)
如果你不能把它放在监听器中,你可以覆盖onSharedPreferencesChanged()
方法并像这样访问:
SharedPreferences prefs = getSharedPreferences(String str, Context.MODE_PRIVATE)
SharedPreferences.Editor prefEditor = prefs.edit()
editor.putInt("distance", 1610)
editor.apply()
否则使用单例的应用程序上下文。
更新以回复评论: 我为误解你的问题而道歉。在这种情况下,例如:
SharedPreferences prefs = getDefaultSharedPreferences(appContext);
int distance = prefs.getInt("distance", defaultValue);
preference.setSummary(/* whatever value you wish to pass*/);