PreferenceActivity使用示例
MainActivity如下:
package cn.testpreferenceactivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
/**
* Demo描述:
* PreferenceActivity的使用示例
*
* 注意事项:
* 1 不要ListPreference的属性android:dialogMessage
* 若设置则无法弹出选择列表.
* 这和单选,多选对话框类似不能设置其Message.
* 2 不要ListPreference的属性android:positiveButtonText
* 即使设置也无效
* 3 注意ListPreference的默认值的设定
* android:defaultValue="222"
* 该值必须是 android:entryValues="@array/values_array"
* 这个数组中包含的值!!!!!!!!!!!!!
*
*
* 参考资料:
* 1 http://www.cnblogs.com/adm1989/archive/2012/08/01/2618403.html
* 2 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=188859
* Thank you very much
*/
public class MainActivity extends PreferenceActivity {
private CheckBoxPreference mCheckBoxPreference;
private ListPreference mListPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferenceactivity);
init();
}
private void init(){
mCheckBoxPreference=
(CheckBoxPreference) findPreference(getResources().getString(R.string.first_key));
mCheckBoxPreference.setOnPreferenceChangeListener(new PreferenceChangeListenerImpl());
mCheckBoxPreference.setOnPreferenceClickListener(new PreferenceClickListenerImpl()); mListPreference=
(ListPreference) findPreference(getResources().getString(R.string.listpreference_key));
mListPreference.setOnPreferenceChangeListener(new PreferenceChangeListenerImpl());
mListPreference.setOnPreferenceClickListener(new PreferenceClickListenerImpl());
} private class PreferenceClickListenerImpl implements OnPreferenceClickListener{
@Override
public boolean onPreferenceClick(Preference preference) {
String preferenceKey=preference.getKey().toString();
if (preferenceKey.equals(getResources().getString(R.string.first_key))) {
System.out.println("点击了CheckBoxPreference");
}
if (preferenceKey.equals(getResources().getString(R.string.listpreference_key))) {
System.out.println("点击了ListPreference");
}
return true;
}
} /**
* 注意事项:
* 在OnPreferenceChangeListener的onPreferenceChange()
* 可知改变后的值,但该值还未真正存入尚在内存中贮存.
* 所以此时调用getValuesFromSP得到的只是改变前的值.
*
*/
private class PreferenceChangeListenerImpl implements OnPreferenceChangeListener{
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String preferenceKey=preference.getKey().toString();
if (preferenceKey.equals(getResources().getString(R.string.first_key))) {
System.out.println("切换后值为:"+newValue.toString());
}
if (preferenceKey.equals(getResources().getString(R.string.listpreference_key))) {
System.out.println("切换后值为:"+newValue.toString());
}
return true;
} } @Override
public void onBackPressed() {
getValuesFromSP();
super.onBackPressed();
} // 从PreferenceActivity的SharedPreferences中取数据
private void getValuesFromSP(){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
Boolean first_value = sp.getBoolean(getResources().getString(R.string.first_key), false);
String listpreference_key = sp.getString(getResources().getString(R.string.listpreference_key), null);
System.out.println("从SharedPreferences中取出的是:" + first_value);
System.out.println("从SharedPreferences中取出的是:" + listpreference_key);
}
}
preferenceactivity.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference
android:key="@string/first_key"
android:summary="@string/first_default"
android:summaryOff="@string/first_off"
android:summaryOn="@string/first_on"
android:title="@string/first_title"
/> <ListPreference
android:dialogIcon="@drawable/ic_launcher"
android:dialogTitle="@string/listpreference_title"
android:entries="@array/names_array"
android:entryValues="@array/values_array"
android:key="@string/listpreference_key"
android:negativeButtonText="@string/listpreference_no"
android:summary="@string/listpreference_summary"
android:title="@string/listpreference_title"
android:defaultValue="222"
/> </PreferenceScreen>
strings.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">TestPreferenceActivity</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string> <string name="first_key">first_key</string>
<string name="first_on">first_on</string>
<string name="first_off">first_off</string>
<string name="first_title">first_title</string>
<string name="first_default">first_default</string> <string name="listpreference_key">listpreference_key</string>
<string name="listpreference_title">listpreference_title</string>
<string name="listpreference_summary">listpreference_summary</string>
<string name="listpreference_message">listpreference_message</string>
<string name="listpreference_ok">OK</string>
<string name="listpreference_no">NO</string> </resources>
PreferenceActivity使用示例的更多相关文章
- 【起航计划 019】2015 起航计划 Android APIDemo的魔鬼步伐 18 App->Device Admin 设备管理器 DeviceAdminReceiver DevicePolicyManager PreferenceActivity的使用
Device Admin示例介绍了类DeviceAdminReceiver,DevicePolicyManager和ActivityManager. 使用DevicePolicyManager这个类, ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
- iOS之ProtocolBuffer搭建和示例demo
这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我 ...
随机推荐
- 基于visual Studio2013解决算法导论之023队列实现(基于数组)
题目 基于数组的队列 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #i ...
- Android 电话自己主动接听和挂断具体解释
1.通过aidl及反射实现挂断电话 详细分三步: (1)ITelephony.aidl ,必须新建com.android.internal.telephony包并放入ITelephony.aidl文件 ...
- Axis2(7):将Spring的装配JavaBean发布成WebService
在现今的Web应用中经常使用Spring框架来装载JavaBean.如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的 ...
- mysql 参数optimizer_switch
mysql 5.1中开始引入optimizer_switch, 控制mysql优化器行为.他有一些结果集,通过on和off控制开启和关闭优化器行为.使用有效期全局和会话两个级别,在5.5中optimi ...
- Linux下安装yum工具
Linux下安装yum工具 http://blog.csdn.net/caoshichaocaoshichao/article/details/13171919
- Qt 智能指针学习(7种QT智能指针和4种std智能指针)
从内存泄露开始? 很简单的入门程序,应该比较熟悉吧 ^_^ #include <QApplication> #include <QLabel> int main(int arg ...
- git教程1
主要参考: 官方书籍: Pro Git 中文版:http://git.perlchina.org/book/zh 英文版:http://git.perlchina.org/book http://gi ...
- Jquery中的$().each,$.each的区别
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...
- PHP - 验证用户名
/** * * 函数名:_check_username($user_str,$min_num,$max_num); * 作用:检测用户名是否符合格式 * 参数: * 1:用户名 * 2:不得小于多少位 ...
- C# - InnerList
运行效果: 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; name ...