android sharedpreferences 存储对象,android中SharedPreferences实现存储用户名功能
1. 简介
SharedPreferences是一种轻型的数据存储方式,通过key-value键值对的方式将数据存储在xml文件中,常用于存储简单的配置信息。
2. 使用方式
2.1 获取SharedPreferences对象
Android中可通过以下三种方式获取SharedPreferences对象:
2.2.1 Context类中的getSharedPreferences()
接收两个参数,第一个参数指定存储数据的文件,若指定文件不存在,则新建该文件,存放目录为"/data/data/package_name/shared_prefs/",其中package_name为包名。
第二个参数则为操作模式,主要有两种:
MODE_PRIVATE:私有模式,默认情况下的模式,与直接传入0作为参数效果一样,表示只有当前程序可对这个文件进行操作。
MODE_MULTI_PROCESS:多进程模式,允许多个进程对该文件进行操作。
2.2.2 Activity类中的getPreferences()
这个方法与上一个方法比较相似,不同之处在于它只接收一个参数,用于指定操作模式,而无需指定文件名,这个方法默认将当前Activity的类名作为存储数据的文件名。
2.2.3 PreferenceManager类中的getDefaultSharedPreferences()
这是一个静态方法,接收一个Context参数,使用当前应用程序的包名作为存储数据的文件名。
2.2 获取SharedPreferences.Editor对象
SharedPreferences对象本身是只可以读取而不能保存数据的,需要保存数据则要调用SharedPreferences对象的edit()方法获取一个Editor对象。
2.3 通过putXxx方法存储数据
得到Editor对象后,则可调用它的putXxx方法添加数据,这里的Xxx指的是添加的数据类型,例如存储字符串数据则调用putString()方法。这个方法接收两个参数,第一个参数为key值,第二个参数为数据的值,即一个键值对。
2.4 提交变化
添加或移除(remove方法)数据后,需要调用Editor对象的commit()方法将所作变化提交。
2.5 获取存储的数据
获取已经存储的数据较为简单,直接调用SharedPreferences对象的getXxx方法即可,使用方法与Editor对象的putXxx类似。这个方法也是接收两个参数,第一个参数指定要获取的数据的key值,第二个参数指定当获取的数据不存在时所返回的默认值。
3. 范例-实现保存用户名的功能
布局:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context="com.studying.myapplication.MainActivity">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="用户名" />
android:id="@+id/username"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4" />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="密码" />
android:id="@+id/passward"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:inputType="textPassword" />
android:id="@+id/remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="记住用户名" />
android:id="@+id/login"
android:layout_width="200dp"
android:layout_height="35dp"
android:text="登录"
android:textSize="12sp" />
活动类:
public class MainActivity extends Activity implements View.OnClickListener {
private SharedPreferences mPref;
private SharedPreferences.Editor mEditor;
private EditText mUserName;
private EditText mPassword;
private CheckBox mIsRemember;
private Button mLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
mUserName = (EditText) findViewById(R.id.username);
mPassword = (EditText) findViewById(R.id.passward);
mIsRemember = (CheckBox) findViewById(R.id.remember);
mLogin = (Button) findViewById(R.id.login);
mLogin.setOnClickListener(this);
mPref = getSharedPreferences("user_data", MODE_PRIVATE);
mEditor = mPref.edit();
//若之前曾设置过记住用户名,则读取并设置用户名
if (mPref.getBoolean("is_remember", false)) {
mUserName.setText(mPref.getString("user_name", ""));
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.login:
String userName = mUserName.getText().toString().trim();
String password = mPassword.getText().toString().trim();
//测试用账号
if ("admin".equals(userName) && "123456".equals(password)) {
Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();
//若勾选了记住用户名,则保存数据
if (mIsRemember.isChecked()) {
mEditor.putString("user_name", userName);
mEditor.putBoolean("is_remember", true);
mEditor.commit();
}
} else {
Toast.makeText(this, "用户名或密码错误!", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
本文作学习交流用,如有错误,欢迎指正!希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android sharedpreferences 存储对象,android中SharedPreferences实现存储用户名功能相关推荐
- android 序列化存储对象,android中对象序列化存储
项目中要存储一些数据为了提高不必要的网络请求,提高效率,用到数据持久化的知识点,针对这个问题,解决办法其实有很多,以前在项目中是服务获取到webservice的xml,然后直接将xml保存在本地,之后 ...
- android 手动回收对象,Android Studio Studio回收列表中的JSON对象
我想在recyclerview中显示一些JSON对象,并且希望它们在日期之后排序,我该如何实现?下面是下载从JSON URL的数据的方法:Android Studio Studio回收列表中的JSON ...
- android 获取对话框对象,Android 基本Dialog和自定义Dialog
Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...
- android 高德坐标对象,android: 高德地图
分为地图,定位,搜索(我还没做导航功能) 建议采用gradle方式集成 添加依赖 在project/build.gradle文件下添加jcenter的仓库地址 allprojects { reposi ...
- c语言中负数的读取和存储,C语言中负数的存储方式
详细介绍负数的文章: https://blog.csdn.net/daiyutage/article/details/8575248 1.以char类型举例,其取值范围是 -128 ~ 127,即-2 ...
- java存储数据_Java中六种数据存储方式
存储数据 1.寄存器(register).这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直接控制,也不能在程序中 ...
- android 保存 parcelable对象,Android 使用序列化Serializable和Parcelable
Android 序列化Serializable和Parcelable使用和区别 一:Serializable 1.什么是序列化 将一个类对象转换成可存储,可传输状态的过程. 2.什么是Serializ ...
- android handler 传递对象,Android之Handler消息传递机制详解
前言 在Android开发中,多线程应用是非常频繁的,其中Handler机制随处可见. 下面就本人对Handle的一些理解与大家一起分享,共同回顾下Handle异步消息传递机制. 1.Handler是 ...
- android requestparams传入对象,Android xutils3上传文件使用示例
Android xutils3工具上传文件非常方便,只需要传入File文件数据或一些其它参数给RequestParams对象即可完成,现在我们来开始使用xutils工具上传文件吧! 步骤一:需要在项目 ...
最新文章
- Linux系统备份策略探讨
- XP登录时提示“无法加载配置文件,找不到指定文件”
- [Web开发] 微软的 PHP+IIS+WinServer 开发培训资料/示例代码
- 去掉字符串左右的空格
- MySQL之父与企鹅的故事
- Android笔记:Activity
- 又是同样的剧情!华为Mate Xs被黄牛炒至4万元上下
- java生日正则表达式_Java语言十五讲
- linux金山打字通游戏版,金山打字游戏2010电脑版-金山打字游戏(最全大集合安装)下载V8.1.0.1官方版-西西软件下载...
- python做矩阵初等行变换,matlab做初等行变换,python 矩阵初等行变换,解线性方程,numpy矩阵运算,sympy矩阵运算,求过渡矩阵,求具体某一基组下的坐标,解析几何
- html2canvas实现网页局部存为图片和打印
- 实现聊天发送语音消息功能
- 小知识------SATA
- OpenCV-Python无法直接读取gif格式的图片,可用PIL读取
- 无FTTR不千兆,华为星光F30让家中不再有“隐秘的角落”
- 【human nature】:马云的故事
- eclipse注释字体大小显示不一样大
- CSS基本知识点总结
- python 模拟微信浏览器请求_2020-03-06 python selenium 模拟访问网页检查更新并微信通知...
- 大学生访谈计算机教师,职业生涯人物访谈报告,教师(共10篇)
热门文章
- r2dbc mysql_使用R2DBC实现数据库的响应式访问
- ui设计教程分享:关于Logo设计要素
- java gul_[java实战篇]--java的GUI(1)
- 「react进阶」一文吃透React高阶组件(HOC)
- 73. 使用自定义 Query 实现 SAP UI5 页面路由的书签功能
- ListBox优化初步(二)
- ygomobile卡组下载网站_游戏王YGOMobile
- 安全多方计算——Yao‘s 混淆电路
- 转:solr 从数据库导入数据,全量索引和增量索引(实例配置原理)
- 做一个小程序大概需要多少钱?一般小程序要多少钱?