我们在设计软件的时候,需要记录软件设置的基本信息,那么怎么来保存他们呢?我们可以使用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. 支持向量机(SVM)理论总结系列.线性可分(附带R程序案例:用体重和心脏重量来预测一只猫的性别)

    附注:不要问我为什么写这么快,是16年写的. 1.名词解释 支持向量机中的机:在机器学习领域,常把一些算法看做一个机器,如分类机(也叫作分类器) 2.问题描述 空间中有很多已知类别的点,现在想用一个面 ...

  2. 关于c# 基础运算符的应用

    运算符 分为5种 1 算数预算符 +,-,*,/,分别为加减乘除 ++为加1,--为减1, 前++   后++  的区别 int a = 10, b = a++;            Console ...

  3. Django的URL路由

    URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那 ...

  4. javascript string对象方法总结

    1.anchor() 用于创建html锚,也就是a标签,()中可以带参数,是a标签的name属性值. var string="hello world"; document.writ ...

  5. daterangepicker 时间插件

    在工作中学习到的一种插件 上网查询之后发现 在bootstrap中的时间选择器有两种:dateTimePicker和dateRangePicker HTML <div id="repo ...

  6. ThinkPhp模板转Flask模板

    Template Converter 网上的PHP资源很多,项目要用Python,所以想起做一个模板转换器,从ThinkPhp转成Flask的Jinja模板. 直接指定两个目录,将目录下的模板文件转换 ...

  7. 谷歌(Google Chrome)插件安装

    chrome应用商店打不开,安装插件的另一种方式 接下来以JsonView为例讲解安装步骤: 1.打开GitHub: https://github.com 2.搜索jsonview 3.选择需要的插件 ...

  8. CoreAnimation 寄宿图

    #CoreAnimation 寄宿图 寄宿图:图层中所包含的图 by:旭宝爱吃鱼 针对于寄宿图我在这里只讨论contents属性以及Custom Drawing. contents content:内 ...

  9. osprofiler在openstack Cinder里的使用

    最近在做OpenStack Cinder driver的性能调试, 之前一直是通过在driver里面加入decorator,完成driver各个接口的执行时间的统计. 其实在openstack,已经在 ...

  10. 百度api使用心得体会

    最近项目中在使用百度地图api,对于其中的一些有用的点做一些归纳整理,如有不对的地方,欢迎各位大神纠正指出. 一定要学会查找百度地图api提供的类参考网站:http://lbsyun.baidu.co ...