我们在设计软件的时候,需要记录软件设置的基本信息,那么怎么来保存他们呢?我们可以使用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()方法中使用
@Overrideprotected 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初学者,第一次开博,错误之处难免,请大家多多包含,指教。

转载于:https://www.cnblogs.com/dava/p/3684586.html

android开发之-软件设置保存-快速学会使用SharedPreferences篇-实测相关推荐

  1. Android开发常用权限设置

    Android开发常用权限设置 加在AndroidManifest.xml 文件中manifest标签以内,application以外 例如: 访问登记属性 android.permission.AC ...

  2. Android开发常用软件

    shankes 博客访问链接: CSDN :shankes的博客 简书 : shankes 码云:shankes.gitee.io github:sankes.github.io Android开发常 ...

  3. golang开发常用软件设置整理

    1.mobaxterm将终端输出记录到日志文件(带时间戳) 按照下图所示将日志文件存储到本地,可以设置日志文件的存储路径 2.关于IDEA软件进行git操作过慢的解决办法 (1)原因 IDEA的操作G ...

  4. 现在android开发都会用到那些快速开发框架或者第三库?Android百大框架分享,附完整项目

    一.榜单介绍 排行榜包括四大类: 单一框架:仅提供路由.网络层.UI层.通信层或其他单一功能的框架 混合开发框架:提供开发hybrid app.h5与webview结合能力.web app能力的框架 ...

  5. Android开发笔记(二十九)使用SharedPreferences存取数据

    SharedPreferences使用场景 共享参数(SharedPreferences)是Android上的一个轻量级存储工具,存储结构是类似map的key-value键值对形式.它主要用于保存ap ...

  6. android开发我的新浪微博客户端-用户授权页面UI篇(3.1)

    看上面的图,其实这个页面的UI实现不复杂,首先是背景部分的实现这个参考 android开发我的新浪微博客户端-载入页面UI篇(1.1),重点来讲讲这个半透明的弹出对话框窗口是如何实现的,首先新建名为A ...

  7. android开发我的新浪微博客户端-用户授权页面功能篇(3.2)

      ==> 在上一篇实现了用户授权页面的UI,如上图,接下来要做的就是在这个基础上完成功能部分真正实现用户的授权认证,这一篇是android开发我的新浪微博客户端-OAuth篇(2.1)的具体应 ...

  8. android教学!Android开发人员不得不收集的代码,看看这篇文章吧!

    正式加入字节跳动,分享一点面试小经验 今天正式入职了字节跳动.工号超吉利,尾数是3个6.然后办公环境也很好,这边一栋楼都是办公区域.公司内部配备各种小零食.饮料,还有免费的咖啡.15楼还有健身房.而且 ...

  9. 关于Android 开发常用软件的快捷键总结

    Linux常用命令 文字界面切换登录界面: ctrl+alt + f1 ~ f6ubuntu300分钟关闭 sudo shutdown +300在指定时间关闭电脑 shutdown -h 20:30查 ...

最新文章

  1. Android之实现上下左右翻页效果
  2. c语言数位递增的数解题思路,【菜鸟求助】21位数的花朵数问题,求解题思路
  3. Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像
  4. 突然发现缓存这么好用
  5. win10系统使用MarkdownPad2无法渲染
  6. SAP CRM Interactive Report(交互式报表)里和服务订单相关的一些字段
  7. ntop网络监控-安装配置指南
  8. java程序设计_Java程序设计-Object类(笔记)
  9. 学习.net 2.0需要讲究一下策略
  10. MySQL字符串拼接函数使用
  11. Oblog 2.52导出日志最新漏洞
  12. 程序猿郭小喵曾经的实习故事
  13. [常微分方程的数值解法系列五] 龙格-库塔(RK4)法
  14. 周志华 《机器学习初步》模型评估与选择
  15. 【转】跨终端实践-天猫试戴的解决方案
  16. Selenium一些特殊情况的处理:失去焦点、点击不生效、长页面处理、先触发事件才能动态加载的元素、日期输入
  17. sql操作access时出现 MSDTC错误,服务器 'SERVER' 上的 MSDTC 不可用。
  18. 航空总线1553B接口设计
  19. 最好用的地图匹配框架——基于HMM的Valhalla
  20. HpM351a激光打印机加粉后,提示remove shipping lock from black cartridge的解决办法

热门文章

  1. Eclipse Color Theme
  2. shell脚本编程学习之路-shell数组
  3. QTP自动化测试自学手册V2.0版本
  4. hadoop大数据平台架构之DKhadoop详解
  5. CentOS Linux解决Device eth0 does not seem to be present
  6. Django基础之Model创建表
  7. 蓝桥杯 如何计算 X^X = 10 来求X呢?
  8. CSS3无前缀脚本prefixfree.js与Animatable使用
  9. 经典排序算法python回顾之一 交换排序
  10. linux中通过命令生成hex值