android 66 sharedperference的使用
package com.itheima.qqlogin; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader; import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
/*
##Context 是什么,Activity是Context的子类,this就是Context,getApplicationContext()返回值就是Context,
> 上下文 : 程序运行的一个依赖的环境. 必须有这个环境,才可以方便的执行代码,没有就不能方便的执行代码了。
> 应用程序运行的全局的环境.帮助类. ##共享参数 SharedPerference
1. 声明sp
private SharedPreferences sp;
2. 初始化sp
sp = this.getSharedPreferences("config", MODE_PRIVATE);
3. 使用sp
Editor editor = sp.edit();
editor.putString("qq", qq);
editor.putString("password", password);
//一定不要忘记 提交数据
editor.commit();//提交数据. 类似关闭流,事务
4. 读取sp
sp.getString("qq", "");
*/
public class MainActivity extends Activity {
private EditText et_qqnumber;
private EditText et_password;
private CheckBox cb_remember; /**
* 1. 声明一个共享参数(存储数据方便的api,专门往文件存数据)
*/
private SharedPreferences sp; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2. 通过上下文得到一个共享参数的实例对象
sp = this.getSharedPreferences("config", MODE_PRIVATE);//config是文件名,在内存储的data/data/包名/shared_prefern/config.xml,与设置相关的都在SharedPreference里面(铃声,震动),
//类似 File f = new File("config");
//寻找这些控件
et_qqnumber = (EditText) findViewById(R.id.et_qqnumber);
et_password = (EditText) findViewById(R.id.et_password);
cb_remember = (CheckBox) findViewById(R.id.cb_remember);
restoreInfo();
} /**
* 登陆按钮的点击事件
* @param view
*/
public void login(View view){
String qq = et_qqnumber.getText().toString().trim();
String password = et_password.getText().toString().trim();
if(TextUtils.isEmpty(qq)||TextUtils.isEmpty(password)){
Toast.makeText(this, "用户名和密码不能为空", 0).show();
return;
}else{
//判断是否需要记录用户名和密码
if(cb_remember.isChecked()){//被选中状态,需要记录用户名和密码
//TODO:记录密码
Editor editor = sp.edit();//返回值是一个编辑器,专门用来编辑文件,Editor类似于输出流。
editor.putString("qq", qq);
editor.putString("password", password);
editor.commit();//提交数据. 类似关闭流,事务
}
//登陆操作的. 模拟登陆,数据应该提交给服务器 由服务器比较是否正确
if("10000".equals(qq)&&"123456".equals(password)){
Toast.makeText(this, "登陆成功", 0).show();
}else{
Toast.makeText(this, "登陆失败", 0).show();
}
}
} /**
* 根据原来保存的文件信息,把qq号码和密码信息回显到界面
*/
public void restoreInfo(){
//TODO:读取密码
String qq = sp.getString("qq", "");//""是默认值,如果不存在就返回"",
String password = sp.getString("password", "");
et_qqnumber.setText(qq);
et_password.setText(password);
}
}

config.xml存储的密码:

保存设置信息:
package com.itheiam.setting; import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener; public class MainActivity extends Activity {
private CheckBox cb;
private SharedPreferences sp;//保存设置的信息,例如是否开启飞行模式status为true表示开始了false表示没有开启。 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb = (CheckBox) findViewById(R.id.cb);
sp = this.getSharedPreferences("config", MODE_PRIVATE);
//回显数据
boolean status = sp.getBoolean("status", false);//false是默认值,默认不勾选
cb.setChecked(status);
//监听变化
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
// 当勾选状态变化的时候调用的方法
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Editor editor = sp.edit();
editor.putBoolean("status", isChecked);
// 一定不要忘记 提交数据
editor.commit();// 提交数据. 类似关闭流,事务
}
});
} }
android 66 sharedperference的使用的更多相关文章
- CSS Grid 布局完全指南(图解 Grid 详细教程)
CSS Grid 布局是 CSS 中最强大的布局系统.与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,也就意味着它可以同时处理列和行.通过将 CSS 规则应用于 父元 ...
- React Native组件间通信
React Native组件间通信 React Native组件的关系有:父子关系.无直接关系.组件间通信主要针对这两类来讨论. 一.父组件和子组件之间通信 父组件向子组件传递消息.数据通过对子组件的 ...
- 从零学React Native之13 持久化存储
数据持久化就是指应用程序将某些数据存储在手机存储空间中. 借助native存储 这种方式不言而喻,就是把内容传递给native层,通过原生API存储,详见从零学React Native之05混合开发 ...
- Android 中文API (66) —— BluetoothClass.Device
前言 本章内容是android.bluetooth.BluetoothClass.Device,为Android蓝牙部分的章节翻译,版本为Android 2.3 r1,翻译来自中山大学的" ...
- 【Android Developers Training】 66. 添加动画
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Android的加速度传感器模拟摇一摇的效果-android学习之旅(66)
主要介绍一下android的加速传感器的简单用法,模拟摇一摇 ,如果x,y,z三个方向的加速度超过了15,就会弹出Toast,当然你可以设置更复杂的策略,比如判断间隔 代码如下 public clas ...
- Android(java)学习笔记66:Android Studio中build.gradle简介
1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...
- Android零基础入门第66节:RecyclerView点击事件处理
前面两期学习了RecyclerView的简单使用,并为其item添加了分割线.在实际运用中,无论是List还是Grid效果,基本都会伴随着一些点击操作,那么本期就来一起学习RecyclerView的点 ...
- [Android] 【视频】黑马安卓62、66期等教程+源码
下载地址:http://fu83.cn/thread-58-1-1.html
随机推荐
- Ajax、Comet、HTML 5 Web Sockets技术比较分析
最近因为考虑研究B/S结构网站即时消息处理 参考了 JAVA怎么样实现即时消息提醒http://bbs.csdn.net/topics/330015611http://www.ibm.com/deve ...
- hbase rowkey设计的注意事项
充分利用有序性 1.1 如果要scan操作,且不是很频繁,可以利用rowkey的有序性将需要一起扫描的数据放到一起.例如直接用时间戳.这样就可以按时间scan了.这个只要是简单的全表扫描都行. 1.2 ...
- 如何通过REST获取JENKINS的编译进度?
第二版功能需要实现, 我看了一下,获取百分比进度不太可能了,,因为JENKINS本身都没有具体的百分比进度.. 那,,只好实现获取实时值,如果完成就显示完成. URL: http://1.2.3.4/ ...
- 制作LOGO的35种方法
A logo design is really a graphical element (ideogram, symbol, emblem, icon, sign) that, along with ...
- jni相关
封装 jni 的 java 层 Integer.Long 对象使用时必须用 new 对象的形式,防止修改 128>x x>-128 之间缓存的对象,一定要谨记 配置 在 eclipse 环 ...
- bzoj1558
好题,初看以为只要差分然后维护相同的段数目但是请注意下面的情况2 3 5 8 9 1 2 3 4 这显然答案是3而不是4因此我们还要再维护ld,rd表示左右单独的段长度和s表示不包括左右单独的段,中间 ...
- 【转】Windows7 下安装 JDK 7 时版本冲突问题解决
原文网址:http://wxl24life.iteye.com/blog/1966058 自己电脑上一直用的 JDK 版本是 1.6,今天决定更新到 1.7,在安装 JDK 1.7 后,控制台输入 j ...
- MOSS母板页制作 学习笔记(一)
转:http://xiachanghao1990.blog.163.com/blog/static/4869602420114235536573/ 母版页制作其实应该算是一个比较基础的工作,但是熟练制 ...
- EasyUI的增删查改(后台ASP.NET)
转自:http://www.cnblogs.com/dedeyi/archive/2013/04/22/3035057.html 某某人曾经跟我说,你们做系统不就是增删查改吗. 是啊,很多时候我们就是 ...
- tomcat web容器中,调用jersey client端报错的处理
在web工程中,写main方法,运行ok. 发布到tomcat中后,报错. javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/r ...