根据依赖项的值禁用首选项(代码检查)

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) 内的目标=] 根据需要。