根据依赖项的值禁用首选项(代码检查)
Disable Preference based on Value of its Dependency (Code Check)
我正在尝试做一些我不确定的事情,需要有人提供反馈。
我有两个偏好。其中一个,我要依赖另一个的值。
示例:我的 "Notification Mode" 首选项有 2 个选项:"Timer" 和 "Reminder"
如果用户选择 "Timer" 选项,我希望我的其他首选项可用于设置时间。
否则,我希望禁用设置定时器的首选项。
这是我在我的偏好更改后的侦听器中得出的结论:
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
是否正确。
我通过引用有问题的 Preference
并使用 if
语句以及使用 onDependencyChanged()
和设置 [=14] 的组合实现了 if(key.equals)
内的目标=] 根据需要。
我正在尝试做一些我不确定的事情,需要有人提供反馈。
我有两个偏好。其中一个,我要依赖另一个的值。
示例:我的 "Notification Mode" 首选项有 2 个选项:"Timer" 和 "Reminder"
如果用户选择 "Timer" 选项,我希望我的其他首选项可用于设置时间。
否则,我希望禁用设置定时器的首选项。
这是我在我的偏好更改后的侦听器中得出的结论:
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
是否正确。
我通过引用有问题的 Preference
并使用 if
语句以及使用 onDependencyChanged()
和设置 [=14] 的组合实现了 if(key.equals)
内的目标=] 根据需要。