多个首选项的setOnPreferenceClickListener

时间:2016-06-14 15:41:24

标签: android sharedpreferences preferences clicklistener

如果我们有多个首选项,例如复选框,编辑文本,列表首选项,如何一次性对这些项设置setOnPreferenceClickListener,而不是在每个首选项上设置侦听器。我需要支持最新的设备(> 4.0)。

说,如果我们在不同类别下有10个首选项,并且如果我们需要在所有首选项上设置侦听器,我不想单独找到所有首选项并为其编写代码。使用一些循环来一次获得单个所有首选项,是否有任何方法我们只能编写一个侦听器并使用switch case?

1 个答案:

答案 0 :(得分:1)

好吧,如果您使用旧时尚偏好样式(使用addPreferencesFromResource()),则可以覆盖onPreferenceTreeClick()函数。

如果您使用基于片段的现代首选项,则应覆盖onPreferenceStartFragment()。我还没有测试过这个解决方案,但根据文档,这就是你要找的东西。

这两个函数都作为参数传递Preference对象,在那里你可以找到首选键...第一个选项对我有用,是的,我是一个老式的人。

修改

使用基于片段的活动时:您不必在每个项目上设置单击侦听器。只需覆盖onPreferenceTreeClick()课程中的PreferenceFragment即可。这是一个例子。

public static class GeneralPreferenceFragment extends PreferenceFragment {
    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
        switch (preference.getKey()){
              case "key_1":
                  //Do your stuff
                  break;
        }
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
}