【发布时间】:2019-07-12 12:04:09
【问题描述】:
我正在尝试做一些我不确定的事情,需要有人提供反馈。
我有 2 个偏好。其中一个,我想依赖另一个的价值。
示例:我的“通知模式”偏好有 2 个选项:“定时器”和“提醒”
如果用户选择“计时器”选项,我希望我的其他首选项可用于设置时间。
否则,我希望禁用设置计时器的首选项。
这是我在我的 pref 更改的侦听器中想出的:
if (key.equals(PREF_NOTIFICATION_MODE)) {
Preference notifModePref = findPreference(key);
notifModePref.setSummary(sharedPreferences.getString(key, ""));
if(!notifModePref.equals("Timer Mode")) {
Preference timerDurationPref = findPreference(PREF_TIMER_DURATION);
timerDurationPref.onDependencyChanged(notifModePref, true);
} else if(notifModePref.equals("Timer Mode")) {
Preference timerDurationPref = findPreference(PREF_TIMER_DURATION);
timerDurationPref.onDependencyChanged(notifModePref, false);
}
}
我不确定我这样做是否正确,或者onDependencyChanged 是否正确。
【问题讨论】:
-
更新: 到目前为止,当它的 Dependency get 更改为“Timer mode”以外的值时,我成功地“禁用”了 Timer Amount Preference,但是当我更改时它回到“定时器模式”,定时器数量偏好保持禁用..
-
您能否重新表述您的问题或要求。您所需的代码可能比您的问题更简单。并且你能粘贴你写过的关于代码和偏好xml文件的代码吗?还有一件事要注意,为什么你不使用两个键来检查而不是只使用一个“定时器模式”
-
@RahulPatil 我 am 引用了两个键(因此
if (key.equals(PREF_NOTIFICATION_MODE))和另一个if来检查key是否等于"Timer Mode"..无论如何,我只是想知道我是否以正确的方式使用onDependencyChanged,但我使用ifstatements`和isEnabled,结合onDependencyChanged实现了目标。
标签: android sharedpreferences android-preferences