android sharePreferences学习笔记

个人学习笔记,代码大部分摘自《Android应用开发从入门到精通 卢东海著》

一、简介

众所周知,sharePrefences是android四种基本的储存数据的方式。另外三种分别是sqlite、contentProvider、文件储存。而它的主要适用范围在应用程序保存一些配置信息,如保存账号密码、保留上次的设置配置等,可以说是一个十分轻巧而常用的设置。当然作为明码保存的方式,在实际运用过程中对一些重要信息还要进行加密处理。

二、使用

1、存储信息

使用步骤(1)获取shareprefences对象(2)调用edit接口的putxxx()方法(3)最后再提交

        SharedPreferences sharedPreferences=getSharedPreferences("setting",0);
        sharedPreferences.edit().putString("name",nametext.getText().toString()).apply();
        sharedPreferences.edit().putString("pwd",pwdtext.getText().toString()).apply();

 getSharePreferences(,); //获得对象,第一个参数是文件名,第二个参数是打开方式。有0或者MODE_PRIVATE

注:apply()和commit可行。区别在于是否关注返回值。如果不在意结果,则使用apply

2、读取信息

        SharedPreferences useinfo=getSharedPreferences("setting",0);
        String name=useinfo.getString("name","");
        String pwd=useinfo.getString("pwd","");

 

shareprefences.getXXX(“”,)//XXX代表获取数据的类型,比如string或者int。第一个参数是key值,第二个参数代表无此值的默认数值。

3、PreferenceActivity(3.0前使用,3.0后推荐使用PreferenceFragment)

(1)先创建xml的布局文件。如例

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="网络权限">
        <CheckBoxPreference android:key="gps_setting"
            android:title="启动gps卫星设置" android:summary="该程序有使用GPS的权限"
            />
        <CheckBoxPreference android:key="wire_setting>"
            android:title="使用无线网络" android:summary="该程序有使用无线网络的权限"/>
    </PreferenceCategory>
    <PreferenceCategory android:title="个人信息">
        <CheckBoxPreference android:key="save_info"
            android:title="是否保存个人信息"/>
        <EditTextPreference android:key="name"
            android:title="姓名" android:summary="请输入姓名"/>
        <PreferenceScreen android:key="other_msg"
            android:title="其他个人信息" android:summary="是否工作">
            <CheckBoxPreference android:key="work"
                android:title="工作"/>
            <EditTextPreference android:key="phone"
                android:title="手机" android:summary="请输入手机号"/>
        </PreferenceScreen>
    </PreferenceCategory>
</PreferenceScreen>

 其中几个注意点

  • preferenceSceen 是界面,是最大的分类
  • preferenceCategory 代表一个设置分类
  • checkBoxPreferences 勾选框
  • edittextPrefences 输入框

(2)继承PrefernceActivity类 ,加载页面

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getPreferenceManager().setSharedPreferencesName("setting");
        addPreferencesFromResource(R.xml.pre_setting);
    }

 (3)重写事件的处理逻辑

  • 当单击某个选项框时,会调用onPreferenceTreeClick方法。如取消是否保存个人信息后,姓名输入框设置为不可用
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference){
            if("save_info".equals(preference.getKey())){
                findPreference("name").setEnabled(!findPreference("name").isEnabled());//设置不可用
            }
            return super.onPreferenceTreeClick(preferenceScreen,preference);
        }

  • 当点击确定时,会调用onPreferenceChange()。注:要继承OnPreferenceChangeListener接口,并使用setOnPreferenceChangeListener设置事件方法的实例。
  • 
        public boolean onPreferenceChange(Preference preference,Object newValue){
            preference.setSummary(String.valueOf(newValue));
            return true;
        }

     

4、PreferenceFragment

基本和PreferenceActivity一样,不多赘述

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值