在《Android 在内部存储读写文件》一文中,谈到了登录用户名和密码的方法,通过读取内存文件来实现,但是会出现问题,因为登录名和密码的形式通过username##password的形式,读取的时候以##为分割线,但是一旦用户名中存在##就会出现问题,本文使用SharedPreference来解决这个问题

1. 定义布局
使用之前的布局
2. 把组件的状态用SharedPreference保存起来

* 往SharedPreference里写数据

//拿到一个SharedPreference对象
SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
//拿到编辑器
Editor ed = sp.edit();
ed.putBoolean("checkBox", isChecked);
ed.commit();

* 从SharedPreference里取数据

SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
//从SharedPreference里取数据
boolean b = sp.getBoolean("checkBox", false);

简化后的代码如下:

package com.wuyudong.sharedpreference;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.widget.EditText; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取到SharedPreference对象
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
//获取sp中的内容
String name = sp.getString("name", "");
String pass = sp.getString("pass", "");
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass);
//数据回显至输入框
et_name.setText(name);
et_pass.setText(pass);
} public void click(View v) {
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass); String name = et_name.getText().toString();
String pass = et_pass.getText().toString(); // 获取到SharedPreference对象
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
// 得到编辑器
Editor ed = sp.edit();
ed.putString("name", name);
ed.putString("pass", pass);
ed.commit();
} }

其实android中的很多设置都用到了SharedPreference

例如

查看com.android.settings/shared_prefs下的com.android.settings_preferences.xml文件

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="sound_effects" value="true" />
<boolean name="com.android.inputmethod.latin/.LatinIME" value="true" />
<boolean name="force_hw_ui" value="false" />
<boolean name="jp.co.omronsoft.openwnn/.OpenWnnJAJP" value="false" />
<boolean name="auto_time" value="false" />
<boolean name="show_hw_screen_udpates" value="false" />
<boolean name="24 hour" value="true" />
<boolean name="dock_sounds" value="false" />
<string name="font_size">1.30</string>
<boolean name="allow_mock_location" value="false" />
<boolean name="keep_screen_on" value="false" />
<boolean name="show_hw_layers_udpates" value="false" />
<string name="date_format"></string>
<boolean name="enable_adb" value="false" />
<boolean name="enforce_read_external" value="false" />
<boolean name="show_touches" value="false" />
<boolean name="dtmf_tone" value="true" />
<boolean name="strict_mode" value="false" />
<boolean name="com.example.android.softkeyboard/.SoftKeyboard" value="false" />
<boolean name="show_hw_overdraw" value="false" />
<boolean name="auto_zone" value="false" />
<string name="hdcp_checking">drm-only</string>
<boolean name="show_cpu_usage" value="false" />
<boolean name="debug_layout" value="false" />
<boolean name="com.android.inputmethod.pinyin/.PinyinIME" value="false" />
<boolean name="pointer_location" value="false" />
<boolean name="disable_overlays" value="false" />
<boolean name="bugreport_in_power" value="false" />
<boolean name="haptic_feedback" value="true" />
<boolean name="immediately_destroy_activities" value="false" />
<boolean name="show_all_anrs" value="false" />
<boolean name="verify_apps_over_usb" value="false" />
<boolean name="lock_sounds" value="true" />
<boolean name="show_screen_updates" value="false" />
<boolean name="force_msaa" value="false" />
<boolean name="wait_for_debugger" value="false" />
</map>

Android SharedPreference的使用的更多相关文章

  1. Android SharedPreference 数据存储

    参考:http://www.cnblogs.com/friends-wf/p/4835818.html 应用开发过程中,数据存储几乎是肯定会遇到的问题,根据要存储的数据类型和数量,可以选择合适的存储方 ...

  2. Android SharedPreference最佳实践

    Android提供多种方式保存应用数据,其中一种方式是SharedPreferences,使用键值对保存私有基本的数据.所有的逻辑仅基于以下三个类: SharedPreferences SharedP ...

  3. [android] sharedPreference入门

    /********************2016年5月6日 更新**************************************/ 知乎:Android 如何实现判断用户首次使用,比如首 ...

  4. Android SharedPreference

    在Android开发过程中,Android提供了SharedPreference共享首选项,它的用途就是,用于保存软件配置信息,APP使用过程中,需要用到的配置信息,例如:音量大小等: SharedP ...

  5. Android [SharedPreference轻量级存储]

    SharedPreferencesActivity.java package com.xdw.a122.data; import android.content.SharedPreferences; ...

  6. Android应用开发-护眼提醒-总结篇

    设计初衷: 在学习<第一行代码>的服务那章时,涉及到了alarmmanager的内容.然后笔者当时正好在关注"程序猿怎样保护眼睛"的问题. 于是便自己做了一个demo, ...

  7. Android简单介绍SharedPreference,内部文件,sdcard数据存储

    SharedPreference 以xml的结构储存简单的数据,储存在data/data/程序包名/shared_prefs文件夹中 使用方式 创建对象的方式有三种 Context 的 getShar ...

  8. android——利用SharedPreference做引导界面

    很久以前就接触过sharedPreference这个android中的存储介质.但是一直没有实际使用过,今天在看之前做的“民用机型大全”的app时,突然想到可以使用sharedPreference类来 ...

  9. Android开发学习---sharedpreference的使用

    在前面文章中,为了使数据回显,使用的技术思路是,首先,将数据持久化写到ROM或者SDCard中,其中name和password以":"分隔;然后,将数据记取出来,再用split方法 ...

随机推荐

  1. asp.net App_Code文件夹相关操作

    最近用到了App_Code文件夹,想要实现动态编译文件的方式,即替换文件夹中的类文件从而达到实时修改代码的效果,类似web.config,网上查到的资料基本都是把文件夹中的类文件修改属性为" ...

  2. JAVA 设计模式 模板方法模式

    定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...

  3. Chrome开发者工具详解(2)-Network面板

    Chrome开发者工具详解(2)-Network面板 注: 这一篇主要讲解面板Network,参考了Google的相关文档,主要用于公司内部技术分享. Chrome开发者工具面板 面板上包含了Elem ...

  4. 30天C#基础巩固-----多态,工厂模式

         自己要有自信,相信自己可以找到好的工作.面对校招,企业更加看重自己的基础,这30天就把C#的基础好好的复习,学习下.笔记一定要认真的记录,这样自己复习回顾的时候就有了可以参考的东西了. 一: ...

  5. JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组

    JavaScript基础学习 学习js的基础很重要,可以让自己有更多的技能.我相信这个以后就会用到. Eg:点击选择框,在div中显示出选择的数量 window.onload = function() ...

  6. Emit学习(2) - IL - 对象的创建过程

    上一篇的介绍中, 并没有介绍到对象的创建过程, 这一篇主要就介绍一下, 对象的创建过程. 其实熟悉了IL语法之后, 完全可以用Reflector反编译代码去查看. 而且正因为有这个工具, 可以对照着R ...

  7. js 模板引擎 为什么选择 dot

    我的上篇博文详细介绍了jquery tmpl,因为我想在我的项目里引入JS模版,所以就研究了一下,有人告诉我这个引擎的速度很慢,于是我又去搜集了一下资料,结果发现jquery tmpl是最慢的,于是乎 ...

  8. 如何在WinForm中发送HTTP请求

    如何在WinForm中请求发送HTTP 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: string strURL = &q ...

  9. Asp.net Mvc模块化开发之“开启模块开发、调试的简单愉快之旅”

    整个世界林林种种,把所有的事情都划分为对立的两个面. 每个人都渴望的财富划分为富有和贫穷,身高被划分为高和矮,身材被划分为胖和瘦,等等. 我们总是感叹,有钱人的生活我不懂;有钱人又何尝能懂我们每天起早 ...

  10. 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句

    [源码下载] 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句 作者:webabcd 介绍速战速决 之 PHP 概述 常量 变量 运算符 表达式 控制语句 示例1. ...