如果我们有多个首选项,例如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);
}
}