找了很多关于 ListActivity 跟 Preference 的东西,结果发现添加 Preferecnce 的监听器就够了?
Preference preference = (Preference) findPreference(KEY_xx);
preference
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
System.out.println("onClick");
return false;
}
});
在点击事件里面可以进行页面的跳转等操作!
常用的方法则包括: getKey() setKey()
getSummary() setSummary()
getText() setText()
重点:分析Preference事件
在PreferenceActivity方法中,一个比较重要的监听点击事件方法为:
publicbooleanonPreferenceTreeClick(PreferenceScreen preferenceScreen,Preference preference)
说明:当Preference控件被点击时,触发该方法。
参数说明: preference 点击的对象。
返回值: true 代表点击事件已成功捕捉,无须执行默认动作或者返回上层调用链。例如,不跳转至默认Intent。false 代表执行默认动作并且返回上层调用链。例如,跳转至默认Intent。
在我们继承PreferenceActivity的Activity可以重写该方法,来完成我们对Preference事件的捕捉。
Preference相关的两个重要监听接口。
1Preference.OnPreferenceChangeListener 该监听器的一个重要方法如下:
boolean onPreferenceChange(Preference preference,Object objValue)
说明: 当Preference的元素值发送改变时,触发该事件。
返回值:true 代表将新值写入sharedPreference文件中。false 则不将新值写入sharedPreference文件
2 Preference.OnPreferenceClickListener。该监听器的一个重要方法如下:
publicbooleanonPreferenceClick(Preference preference)
说明:当点击控件时触发发生,可以做相应操作。
那么当一个Preference控件实现这两个接口时,当被点击或者值发生改变时,触发方法是如何执行的呢?事实上,
它的触发规则如下:
1 先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;
如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。
2 onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。