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

时间:2019-02-19 03:45:24

标签: android sharedpreferences android-preferences

我正在尝试做我不确定的事情,需要有人提供反馈。

我有2个偏好设置。其中一个,我想依赖另一个人的价值。

示例:我的“通知模式”首选项有2个选项:“计时器”和“提醒”

如果用户选择“计时器”选项,我希望我的其他“首选项”可以设置时间。

否则,我希望禁用用于设置计时器的首选项。

这是我的首选更改监听器中提出的内容:

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是否正确。

1 个答案:

答案 0 :(得分:0)

我通过引用有问题的if(key.equals)并使用Preference语句以及使用if和设置onDependencyChanged()的组合来实现.isEnabled(boolean)内部的目标根据需要。