我们在设计软件的时候,需要记录软件设置的基本信息,那么怎么来保存他们呢?我们可以使用SharedPreferences。
 
SharedPreferences是一个xml文件,用来存储软件的常规设置。例如:登陆框的用户名或用户自己的设置信息。
 
SharedPreferences自动保存在data/data/package/shared_prefs目录下面。
 

效果图

userInfo.xml便是我们设置的保存的文件。文件名称可以自己指定。
 
那么怎么实现呢?下面我们一步一步来说:
第一步:创建SharedPreferences:
android为我们提供了或的方法,这个方法在有文件时,返回SharedPreferences对象,没有是在创建editor 后执行Editor.commit()是创建。
原文:
Desired preferences file. If a preferences file by this name does not exist, it will be created when you retrieve an editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).
代码1:
SharedPreferences preferences = getSharedPreferences("userInfo",Activity.MODE_PRIVATE);

解释:getSharedPreferences第一个参数userInfo为文件名称,得到的就是userInfo.xml,可以自己起名。

                                                第二个参数Activity.MODE_PRIVATE,是Activity创建文件时的权限,这里是私有的
权限大全:

Context.MODE_PRIVATE = 0x0000
Context.MODE_WORLD_READABLE = 0x0001
Context.MODE_WORLD_WRITEABLE = 0x0002
Context.MODE_APPEND = 0x8000

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

如果希望文件被其他应用读和写,可以传入:
openFileOutput("leigo.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

第二步:初始化添加数据:

代码2:

//获得编辑器信息,这个编辑器想一个map,它是以key-values形式存在的。

SharedPreferences.Editor edit=preferences.edit(); 

//将值添加到编辑器中

  edit.putBoolean("isSendMsg", isSendMsg.isChecked());

  edit.putBoolean("isCall", isCall.isChecked());

  edit.commit();//注意在没有preferences的时候这里进行创建。

  

添加完之后,我们打开文件可以看到存储的值。文件存储在data/data/package/shared_prefs下面, 如果你还不知道怎么查看本地手机文件请看这个android开发之-查看、编辑手机sqlite数据库文件-实测。

第三步:获得SharedPreferences 中的值,显示在手机中。

SharedPreferences preferences = getSharedPreferences(PREFERENCES_NAME,Activity.MODE_PRIVATE);

//获得两个控件,用以展示。

  isSendMsg = (Switch) findViewById(R.id.isSendMessage);

  isCall = (Switch) findViewById(R.id.isCall);

  //将 preferences.getBoolean("isSendMsg", true)信息取出来,赋值给控件,getBoolean的第二个参数是,如果preferences中没有这个值默认的设置的值。

  isSendMsg.setChecked(preferences.getBoolean("isSendMsg", true));

  isCall.setChecked(preferences.getBoolean("isCall", false));

  

好了,至此我们就学习完了怎么使用SharedPreferences了,另外应该注意在退出程序的时候记得保存信息,一般在onStop()方法中使用
@Override

 protected void onStop() {

  super.onStop();

  //停止的时候自动保存信息

  SharedPreferences preferences=getSharedPreferences(PREFERENCES_NAME,Activity.MODE_PRIVATE);

  SharedPreferences.Editor edit=preferences.edit();

  edit.putBoolean("isSendMsg", isSendMsg.isChecked());

  edit.putBoolean("isCall", isCall.isChecked());

  edit.commit();

 }

  作为一个android初学者,第一次开博,错误之处难免,请大家多多包含,指教。

android开发之-软件设置保存-快速学会使用SharedPreferences篇-实测的更多相关文章

  1. Android开发常用权限设置

    加在AndroidManifest.xml 文件中manifest标签以内,application以外 例如:<!--网络权限 --> <uses-permission androi ...

  2. Android开发——支付宝和微信支付快速接入流程

    一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:https://open.alipay.com/platform/home.htm 支付宝首页 这里 有 ...

  3. Android开发之字体设置

    默认字体 Android SDK自带了四种字体:"normal"“monospace",“sans”, “serif”,如下:   字体 看这四兄弟长的还是蛮像,我是看不 ...

  4. Android开发之动态设置字体的样式和粗细

    字体设置通常有两种形式: 1:在xml中直接设置 android:textStyle="bold" android:typeface="sans" 2:用jav ...

  5. Android开发——Toolbar常用设置

    本篇笔记用来记录常用的Toolbar设置,如Toolbar颜色设置,显示返回按钮,显示右边三个点按钮 之前Android 使用的ActionBar,Android5.0开始,谷歌官方推荐使用Toolb ...

  6. android开发之当设置textview多少字后以省略号显示。限制TextView的字数

    设置多少字后以省略号显示 <TextView    android:id="@+id/tv"   android:layout_width="wrap_conten ...

  7. Android(java)学习笔记163:Android开发时候颜色设置是bgr不是rgb

    eb" android:background ="#" 

  8. Android开发使用软件

    开发环境搭建顺序: 1.安装开发工具 1).安装java 2).安装as 3).安装myeclipse 4).安装np++ md 5).安装svn git 2.配置环境变量 1).配置java jav ...

  9. [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)

    == 0) { convertView.setBackgroundResource(R.drawable.list_gray_9); } else { convertView.setBackgroun ...

随机推荐

  1. Oracle11G卸载教程

    用Oracle自带的卸载程序不能从根本上卸载Oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载Oracle呢?那就是直接注册表清除,步骤如下: 1. 开始->设置->控制面板-& ...

  2. 每天一个linux命令30)--chgrp命令

    在Linux系统里,文件或目录的权限的掌控以拥有者及所属群组来管理.可以使用chgrp 指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以. chgrp 命令就是change  gr ...

  3. Cocos2dx热更新遇到的那些坑

    1.Cocos2dx热更新因为文件名含有空格,ios下载失败bug修改 问题描述: 项目中偶尔遇到美术图片命名时不规范,导致图片名字含有空格.导致ios热更新时,遇到下载失败. 解决方案: 1.从新改 ...

  4. Android 自定义 View 圆形进度条总结

    Android 自定义圆形进度条总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 微信公众号:牙锅子 源码:CircleProgress 文中如有纰漏,欢迎大家留言指出. 最近 ...

  5. web微信开发前期准备最新详细流程

    一.申请配置测试公众号与配置本地服务器   1.打开浏览器,输入:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,微信扫码确 ...

  6. 调试时a标签禁止跳转方法

    a.setAttribute("onclick",'');

  7. 关于百度地图js api的getCurrentPosition定位不准确的解决方法

    很久之前帮大叔解决了一个gps坐标转换为百度地图坐标的问题.今天大叔又给我讲百度地图定位不准.我查了一下api,用了官方给出的这样一组函数. //创建查询对象 var geolocation = ne ...

  8. 九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。

    题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj 对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: ...

  9. 备胎的养成记KeepAlived实现热备负载

    在  入坑系列之HAProxy负载均衡 中已经详细讲过了怎么将高并发的请求按均衡算法分发到几台服务器上做均衡防止单机崩溃. 但这样的话有没有发现所有请求都经过了HAproxy代理,自然当并发量越来越高 ...

  10. 关于极光推送在手机系统低于iOS10的手机上闪退的问题。

    最近项目中用到了极光推送,升级到了最新的SDK 2.1.9版本,发现只能在iOS10 上运行,其他测试的时候真机闪退.贴上一个可能的原因: