Android学习【10】PreferenceFragment偏好设置(二)
来源:互联网 发布:java中集合map 编辑:程序博客网 时间:2024/04/28 16:07
上一篇讲述了PreferenceFragment中的各种控件,接下来为各个控件添加监听事件。。。。
主要实现了3个接口OnPreferenceClickListener,OnSharedPreferenceChangeListener和OnPreferenceChangeListener。
onPreferenceClick为点击事件,当点击Preference控件后将触发该方法。但是EditTextPreference等修改内容后再次确认时,不会调用该方法。为了解决这一问题,onSharedPreferenceChanged登场了。当Preference控件内容发生改变时,将触发该方法。最后onPreferenceChange方法用于MultiSelectList和Ringtone的调用。
细节就直接上代码啦,这样比较清楚。。。
public class SettingFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener, SharedPreferences.OnSharedPreferenceChangeListener,Preference.OnPreferenceChangeListener { private CheckBoxPreference checkbox; private EditTextPreference edittext; private MultiSelectListPreference MultiSelectList; private ListPreference list; private RingtonePreference Ringtone; private SwitchPreference Switch; private Preference preference; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.setting); //根据key值找到控件 checkbox = (CheckBoxPreference) findPreference("checkbox"); edittext = (EditTextPreference) findPreference("edittext"); MultiSelectList = (MultiSelectListPreference)findPreference("MultiSelectList"); list = (ListPreference)findPreference("list"); Ringtone = (RingtonePreference) findPreference("Ringtone"); Switch = (SwitchPreference) findPreference("switch"); // 设置监听器 checkbox.setOnPreferenceClickListener(this); edittext.setOnPreferenceClickListener(this); Ringtone.setOnPreferenceClickListener(this); MultiSelectList.setOnPreferenceChangeListener(this); Ringtone.setOnPreferenceChangeListener(this); // 得到我们的存储Preferences值的对象,然后对其进行相应操作 SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); boolean apply_Checked = shp.getBoolean("checkbox", false); //获取历史设置 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); edittext.setSummary(sp.getString("edittext", "")); } @Override // 点击事件触发 public boolean onPreferenceClick(Preference preference) { // 对控件进行操作 if (preference == checkbox) { Toast.makeText(this.getActivity(), " 点击了checkbox :" + checkbox.isChecked(), Toast.LENGTH_SHORT).show(); } else if (preference == edittext) { edittext.setText(""); Toast.makeText(this.getActivity(), " 点击了edittext :" + edittext.getText(), Toast.LENGTH_SHORT).show(); } else if (preference == Ringtone) { Toast.makeText(this.getActivity(), " 点击了Ringtone :" + Ringtone.getRingtoneType(), Toast.LENGTH_SHORT).show(); } return true; } //当Preference发生变化时调用 @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("edittext")) { edittext.setSummary(edittext.getText()); } if (key.equals("list")) { list.setSummary(list.getValue()); } if(key.equals("Ringtone")){ Ringtone.setSummary(Ringtone.getRingtoneType()); } if(key.equals("switch")){ Switch.setSummary(String.valueOf(Switch.isChecked())); } } @Override public void onResume() { super.onResume(); //注册事件 getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { //注销事件 getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); super.onPause(); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference == MultiSelectList) { MultiSelectList.setSummary(newValue.toString()); return true; } if (preference == Ringtone) { Ringtone.setSummary(newValue.toString()); return true; } return false; }}源码戳这里
0 0
- Android学习【10】PreferenceFragment偏好设置(二)
- Android学习【9】PreferenceFragment偏好设置(一)
- Android设置Settings:PreferenceFragment【4】
- Android设置Settings:PreferenceFragment【4】
- Android PreferenceFragment实现设置界面
- Android画图板 - 设置偏好
- Android存储-偏好设置
- Android设置Settings:PreferenceFragment(2)
- Android 设置PreferenceFragment 的背景颜色
- Android中设置界面PreferenceFragment的用法
- Android数据存储(二)----PreferenceFragment详解
- Android数据存储(二)----PreferenceFragment详解
- Android 保存用户偏好设置
- Android 用户偏好设置,SharedPreference
- Android 用户偏好设置SharedPreference
- Android偏好设置的使用
- Android PreferenceFragment
- 存储方式二 -------------------偏好设置存储 NSUserDefaults
- 局部变量和成员变量的区别
- linux内核参数注释与优化
- 第一发博客
- Git使用小结(一)
- 三:Windows常用命令实例
- Android学习【10】PreferenceFragment偏好设置(二)
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- 解决error C2065: 'mwSize' : undeclared identifier
- Android中BindService方式使用的理解
- uva 10599 - Robots(II) -动态规划
- BZOJ 1088 扫雷Mine
- nyoj 小珂的苦恼 144 (简单拓展欧几里得)
- 提升tomcat服务器性能的七条经验
- 编程思想之多线程与多进程(2):线程优先级与线程安全