Android的简单应用(一)——PreferenceFragment实现应用的设置
今天主要讲解怎么使用PreferenceFragment。PreferenceFragment它与默认的SharedPreferences文件相连接,不需要你再自己写代码去操作SharedPreferences。这个是它最大的用处。
一、类
一个主Activity,用来存放fragment.
一个PreferenceFragment。
一个settings.xml里面存放设置的变量。
二、具体代码
activity的代码如下:
public class MainActivity extends Activity{
private SharedPreferences sp;
private OnSharedPreferenceChangeListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new ConfigFragment()).commit();//配置Fragment。
sp = PreferenceManager.getDefaultSharedPreferences(this);//获取配置文件,方便我们查看数值的变化
Log.d("CPACM",sp.getBoolean("autoBack", false)+ sp.getString("et1", "cpacm"));
listener = new OnSharedPreferenceChangeListener(){//SharedPreferences的变化监听器
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
Log.d("CPACM","change");
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, key, Toast.LENGTH_LONG).show();//当SharedPreferences中的数值变化时,显示一个toast.
}
};
sp.registerOnSharedPreferenceChangeListener(listener);
}
}
注意:SharedPreferences一直在WeakHashMap保持监听。这意味着不能用匿名的内部类作为监听器,因为一旦你离开当前的范围它将变成回收的目标。它将首先工作,但是最终,仍然要被回收,被从WeakHashMap移除然后停止工作。在你的类中的一个位置引用一个监听器,这样就好了,提供你的类的实例也不会被销毁。
PreferenceFragment代码如下:
public class ConfigFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);//传入配置文件,里面存放可设置的变量
}
}
settings.xml文件
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference
android:defaultValue="true"
android:key="autoBack"
android:summaryOff="关闭"
android:summaryOn="开启"
android:title="自动回复" /> <PreferenceCategory android:title="SMS 助手" >
<CheckBoxPreference
android:defaultValue="false"
android:key="smsSilence"
android:summaryOff="关闭"
android:summaryOn="开启"
android:title="静音" /> <PreferenceScreen android:title="更多选项" >
<CheckBoxPreference
android:defaultValue="true"
android:key="cb21"
android:summaryOff="关闭"
android:summaryOn="开启"
android:title="功能1" />
<CheckBoxPreference
android:defaultValue="true"
android:key="cb22"
android:summaryOff="停用"
android:summaryOn="使用"
android:title="功能2" /> <ListPreference
android:dialogTitle="请选择论坛"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entriesvalue_list_preference"
android:key="list1"
android:summary="开发论坛"
android:title="android forum" /> <EditTextPreference
android:defaultValue="Hello EditTextPreference"
android:dialogTitle="输入设置"
android:key="et1"
android:summary="点击输入"
android:title="EditTextPreference Sample" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="其他选项" >
<RingtonePreference
android:key="rt1"
android:summary="选择铃声"
android:title="RingtonePreference Sample" />
</PreferenceCategory> </PreferenceScreen>
其中android:key,对应着SharedPreferences的key。
arrays.xml中的值:
<?xml version="1.0" encoding="utf-8"?>
<resources> <string-array name="entries_list_preference">
<item>www.anddev.org</item>
<item>www.eoeandroid.com</item>
<item>developer.android.com</item>
</string-array>
<string-array name="entriesvalue_list_preference">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array> </resources>
Android的简单应用(一)——PreferenceFragment实现应用的设置的更多相关文章
- Android 实现简单音乐播放器(二)
在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...
- Android 实现简单音乐播放器(一)
今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...
- Android课程---Android Studio简单设置
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...
- Android实现简单音乐播放器(MediaPlayer)
Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...
- Android实现简单拨号器
Android实现简单拨号器 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 界面布局只有GridLayout和EditText两个控件,全部 ...
- 【转】Android Studio简单设置
原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...
- Android发展简单介绍
Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...
- android JNI 简单demo(2)它JNI demo 写
android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...
- Android Studio简单设置(转)
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Th ...
- android Glide简单使用
版权声明:大家可以转载,请写明转载申明 https://blog.csdn.net/bzlj2912009596/article/details/81702367 今天,简单讲讲Android里Gli ...
随机推荐
- Cassandra 常见错误索引
类型错误 类型错误调试的技巧 有时候,类型错误提示比较不友好,比如不知道哪个字段出错. 在php中可以用 //过滤几个数据进行操作,逐个检查,或者折半查找错误 $data = array_splice ...
- 关于如何利用原生js动态给一个空对象添加属性以及属性值
首先,回忆一下,访问对象属性一共有两种方法:点获取法和方括号获取法.而我们最常用的就是点获取法了.但是当我们遇到需要给对象动态添加属性和属性值时,点获取法好像就不太好用了,尤其是我们不知道属性名的时候 ...
- JAVA调用Oracle存储过程和函数
连接数据库的工具类: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; imp ...
- JSP中的Cookie
如何创建Cookie 先引包: import="javax.servlet.http.Cookie" JSP是使用如下的语法格式来创建cookie的: Cookie cookie_ ...
- Hibernate基本演示
保存一个对象到数据库中 目录结构 hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hi ...
- Linux SNMP 监控一些常用OID
Linux SNMP 监控一些常用OID ===============linux服务器snmp常用oid http://www.haiyun.me/archives/linux-snmp-oid.h ...
- 详解npm的模块安装机制
详解npm的模块安装机制 依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm ...
- 解决Vue方法中setTimeout改变变量的值无效
把data里的变量继承过来重新封装一下 let that = this; this.rightAnswer = false; setTimeout(function() { that.rightAns ...
- 如何使用Eclipse调试framework
1.下载Eclipse EE(下载地址:http://www.eclipse.org/downloads/) 2.下载并安装JDK(下载地址:http://www.oracle.com/technet ...
- 获取html元素内容
html: <!DOCTYPE ><html> <head> <meta http-equiv="Content-Type" conten ...