SharedPreferences

今天练习了利用SharedPreferences保存登录用户名密码;

layout布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp"> <EditText
android:id="@+id/et_user"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="15sp"
android:textColor="#FF8F44"
android:background="@drawable/bg_username"
android:hint="用户名"
android:paddingLeft="10dp"
android:paddingRight="10dp"/> <EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="15sp"
android:textColor="#FF8F44"
android:layout_below="@id/et_user"
android:background="@drawable/bg_username"
android:hint="密码"
android:inputType="textPassword"
android:layout_marginTop="15dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"/> <CheckBox
android:id="@+id/cb_pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="记住密码"
android:checked="false"
android:layout_below="@+id/et_password"
android:layout_marginLeft="46dp"
android:layout_marginTop="20dp"/> <CheckBox
android:id="@+id/cb_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自动登录"
android:layout_marginLeft="237dp"
android:layout_marginTop="20dp"
android:layout_below="@+id/et_password"/> <Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@id/cb_login"
android:layout_marginTop="20dp"
android:background="@drawable/bg_btn4"
android:text="登录"
android:textSize="20sp"
android:textColor="#fff"/> </RelativeLayout>

activity:

package com.example.helloworld.datastorage;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast; import com.example.helloworld.R; public class SpLoginActivity extends AppCompatActivity { private EditText mEtUser;
private EditText mEtPassword;
private Button mBtnlogin;
private CheckBox mCbremember, mCbautomatic;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sp_login); mEtUser = findViewById(R.id.et_user);
mEtPassword = findViewById(R.id.et_password);
mBtnlogin = findViewById(R.id.btn_login);
mCbremember = findViewById(R.id.cb_pwd);
mCbautomatic = findViewById(R.id.cb_login); //获得mSharedPreferences的实例
mSharedPreferences = getSharedPreferences("logindata", MODE_PRIVATE);
//获取一个Edit对象,所有对数据的操作都需要经过Edit
mEditor = mSharedPreferences.edit();
//从SharedPreferences中取出记住密码的状态值
boolean isremember = mSharedPreferences.getBoolean("isremember", false); //判断状态值
if (isremember) {
//取出账号密码
String names = mSharedPreferences.getString("name", null);
String passs = mSharedPreferences.getString("pass", null);
//设置复选框的状态是勾选的状态
mCbremember.setChecked(true);
mEtUser.setText(names);
mEtPassword.setText(passs);
} //取出自动登录的状态值
boolean isautomatic = mSharedPreferences.getBoolean("isautomatic", false);
if (isautomatic) {
//跳转
Toast.makeText(this, "登陆成功", Toast.LENGTH_LONG).show();
} //对登录按钮添加监听
mBtnlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//判断记住密码的复选框是否勾选如果勾选就在SharedPreferences中存入账号片密码,状态值
if (mCbremember.isChecked()) {
mEditor.putString("name", mEtUser.getText().toString());//获取EditText里的文本内容
mEditor.putString("password",mEtPassword.getText().toString());
//存入状态值,(代表如果已经勾选了,那么就存一个true,的值)
mEditor.putBoolean("isremember", true);
mEditor.commit();
} //自动登录
if (mCbautomatic.isChecked()) {
//当勾选了自动登录 存一个为true的状态值
mEditor.putBoolean("isautomatic", true);
mEditor.commit();
} //跳转
Toast.makeText(SpLoginActivity.this, "登陆成功", Toast.LENGTH_SHORT).show(); }
});
} }

Android学习10的更多相关文章

  1. android学习10——对顶点着器和片段着色器的理解

    图形都是点,线,面组成的.顶点着器指定了顶点的位置,大小和颜色. 看一个顶点着色器的代码 attribute vec4 a_Position; attribute float a_PointSize; ...

  2. 10、android学习资源整理

    1.github上整理好的开源工程 https://github.com/Trinea/android-open-project 2.最流行的android组件大全 http://colobu.com ...

  3. Android学习系列(10)--App列表之拖拽ListView(上)

     研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.      鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  4. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

  5. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  6. Android学习——第一个NDK程序

    在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...

  7. Android学习——windows下搭建Cygwin环境

    在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配置,我们也讲到了在NDk r7以后,我 ...

  8. Android学习——windows下搭建NDK_r9环境

    1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...

  9. 【Android学习】《Android开发视频教程》第一季笔记

    视频地址: http://study.163.com/course/courseMain.htm?courseId=207001 课时5    Activity基础概念 1.Android开发技术结构 ...

随机推荐

  1. Python-Django学习笔记(一)-MTV设计模式

    Django是开源的.大而且全的Web应用框架. 它独具特色,采用了MTV设计模式. MTV框架包括:Model(模型).Template(模板)和View(视图) Model(模型):负责业务对象与 ...

  2. Vuex项目实战store

    首先简单了解一下什么是Vuex? Vuex是一个专为Vue.js应用程序开发的状态管理模式.采用集中式存储来管理应用所有组件的状态. 以下是对vuex的使用的简单介绍: 一.安装 npm i vuex ...

  3. [ZJOI2008] 生日聚会 - dp

    共有\(n\)个男孩与\(m\)个女孩打算坐成一排.对于任意连续的一段,男孩与女孩的数目之差不超过 \(k\).求方案数. \(n,m \leq 150, k \leq 20\) Solution 设 ...

  4. C语言链表总结(创建,排序,增加,删除)

    #include <stdio.h>#include <stdlib.h> typedef struct NODE{ int data ; struct NODE * pNex ...

  5. 如来十三掌-关于不断解密的密码学,佛语解密,rot-13(根据13掌),base64

    得到MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9 然后尝试嘛 base64不太行 那根据十三掌??rot-13 得到ZmxhZ3tiZHNj ...

  6. HTML页面学习

    HTML 文档结构 <!DOCTYPE html> 文档声明 <html lang="en"> 语言 <head> 网站配置信息 <met ...

  7. [Java IO]05_JSON操作

    目录 6.1 JSON 知识背景  6.1.1 JSON 简介  6.1.2 JSON 语法  6.1.3 JSON 的数据结构6.2 Java 中操作 JSON 数据  6.2.1 Jar包下载   ...

  8. Oracle客户端安装及下载地址

    一.下载 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461 ...

  9. 小匠第二周期打卡笔记-Task03

    一.过拟合欠拟合及其解决方案 知识点记录 模型选择.过拟合和欠拟合: 训练误差和泛化误差: 训练误差 :模型在训练数据集上表现出的误差, 泛化误差 : 模型在任意一个测试数据样本上表现出的误差的期望, ...

  10. 2019牛客多校第五场 G subsequence 1 dp+组合数学

    subsequence 1 题意 给出两个数字串s,t,求s的子序列中在数值上大于t串的数量 分析 数字大于另一个数字,要么位数多,要么位数相同,字典序大,位数多可以很方便地用组合数学来解决,所以只剩 ...