SetOnPreferenceClickListener在多个首选项上



如果我们有多个首选项,例如Checkbox,EditText,List首选项,如何立即在这些项目上setonPreferenceClistener,而不是在每个偏好上设置侦听器。我需要支持最新设备(> 4.0)。

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

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

如果您使用的是基于现代片段的偏好,则应覆盖onPreferenceStartFragment()。我还没有测试过此解决方案,但是根据文档,这是您要寻找的。

这两个函数都作为参数偏好对象,您可以在其中找到偏好键...第一个选项对我有用,是的,我有点老式的家伙。

编辑

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

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);
    }
}

相关内容

  • 没有找到相关文章

最新更新