如果我们有多个首选项,例如复选框,编辑文本,列表首选项,如何一次性对这些项设置setOnPreferenceClickListener,而不是在每个首选项上设置侦听器。我需要支持最新的设备(> 4.0)。
说,如果我们在不同类别下有10个首选项,并且如果我们需要在所有首选项上设置侦听器,我不想单独找到所有首选项并为其编写代码。使用一些循环来一次获得单个所有首选项,是否有任何方法我们只能编写一个侦听器并使用switch case?
答案 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);
}
}