android基础学习9——SharedPreferences的使用

来源:互联网 发布:淘宝诺基亚8800da出售 编辑:程序博客网 时间:2024/06/15 20:04

 SharedPreferences是Android平台上一个轻量级的存储类,主要用于存储一些应用程序中的配置参数,例如用户名、密码、自定义参数的设置等。SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中,该文件位于data/data/<packagename>/shared_prefs文件夹中。需要注意的是,SharedPreferences中的value值只能是float、int、long、boolean、String、StringSet类型数据。

接下来通过一个“QQ登录”的案例来演示如何使用SharedPreferences存储数据。

布局文件activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#E6E6E6"    android:orientation="vertical" >    <ImageView        android:id="@+id/iv_head"        android:layout_width="50dp"        android:layout_height="50dp"        android:layout_centerHorizontal="true"        android:layout_marginTop="40dp"        android:src="@drawable/dddss" />    <LinearLayout        android:id="@+id/layout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/iv_head"        android:layout_margin="10dp"        android:background="#ffffff"        android:orientation="vertical" >        <RelativeLayout            android:id="@+id/rl_username"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_margin="10dp" >            <TextView                android:id="@+id/tv_name"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerVertical="true"                android:text="账号" />            <EditText                android:id="@+id/et_number"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="5dp"                android:layout_toRightOf="@+id/tv_name"                android:background="@null" />        </RelativeLayout>        <View            android:layout_width="match_parent"            android:layout_height="2dp"            android:background="#E6E6E6" />        <RelativeLayout            android:id="@+id/rl_userpsw"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_margin="10dp" >            <TextView                android:id="@+id/tv_psw"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerVertical="true"                android:text="密码" />            <EditText                android:id="@+id/et_password"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="5dp"                android:layout_toRightOf="@+id/tv_psw"                android:inputType="textPassword"                android:background="@null" />        </RelativeLayout>    </LinearLayout>    <Button        android:id="@+id/btn_login"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/layout"        android:layout_centerHorizontal="true"        android:layout_marginLeft="10dp"        android:layout_marginRight="10dp"        android:layout_marginTop="20dp"        android:background="#3C8DC4"        android:text="登录"        android:textColor="#ffffff" /></RelativeLayout>

创建工具类

添加一个utils包,编写一个Utils类,用于实现QQ号码和密码的存储与获取功能

package com.example.lenovo.utils;import java.util.HashMap;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;public class Utils {    // 保存QQ号码和登录密码,到data.xml文件中    public static boolean saveUserInfo(Context context, String number,                                       String password) {        SharedPreferences sp = context.getSharedPreferences("data",                Context.MODE_PRIVATE);        Editor edit = sp.edit();        edit.putString("userName", number);        edit.putString("pwd", password);        edit.commit();        return true;    }    // 从data.xml文件中获取存储的QQ号码和密码    public static Map<String, String> getUserInfo(Context context) {        SharedPreferences sp = context.getSharedPreferences("data",                Context.MODE_PRIVATE);        String number = sp.getString("userName", null);        String password = sp.getString("pwd", null);        Map<String, String> userMap = new HashMap<String, String>();        userMap.put("number", number);        userMap.put("password", password);        return userMap;    }}
编写页面交互代码

package com.example.lenovo.qqlogin;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.util.Map;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;import com.example.lenovo.utils.Utils;public class MainActivity extends AppCompatActivity implements OnClickListener {    private EditText etNumber;    private EditText etPassword;    //private CheckBox cbRemember;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        // 取出号码        Map<String, String> userInfo = Utils.getUserInfo(this);        if(userInfo != null) {            // 显示在界面上            etNumber.setText(userInfo.get("number"));            etPassword.setText(userInfo.get("password"));        }    }    private void initView() {        etNumber = (EditText) findViewById(R.id.et_number);        etPassword = (EditText) findViewById(R.id.et_password);//cbRemember = (CheckBox) findViewById(R.id.cb_remember);        findViewById(R.id.btn_login).setOnClickListener(this);    }    public void onClick(View v) {        // 当点击登录时,获取QQ号码 和密码        String number = etNumber.getText().toString().trim();        String password = etPassword.getText().toString();        // 校验号码和密码是否正确        if(TextUtils.isEmpty(number)) {            Toast.makeText(this, "请输入QQ号码", Toast.LENGTH_SHORT).show();            return;        }        if(TextUtils.isEmpty(password)) {            Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();            return;        }        // 登录成功        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();        Log.i("MainActivity", "记住密码: " + number + ", " + password);        // 保存用户信息        boolean isSaveSuccess = Utils.saveUserInfo(this, number, password);        if(isSaveSuccess) {            Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();        } else {            Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();        }    }}

运行程序,输入号码和密码,然后点击登录,会提示保存成功



此时如果将程序退出,再重新打开,会发现QQ号码和密码仍然显示,说明QQ信息已经存储在SharedPreferences中。可以打开DDMS窗口找到data.xml文件导出看到已经成功保存QQ号码和密码。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 塑钢推拉窗下沉怎么办 网上买东西数量不够怎么办 淘宝买东西数量不够怎么办 康佳遥控器坏了怎么办 电视机频幕脏了怎么办 极米遥控器失灵怎么办 电视遥控坏了怎么办 小米手机触摸屏失灵怎么办 oppo手机触摸屏失灵怎么办 苹果手机屏幕没反应怎么办 苹果6sp换屏卡顿怎么办 苹果4屏幕失灵怎么办 苹果手机老是卡怎么办 苹果手机卡机了怎么办 苹果手机卡屏了怎么办 苹果8手机老卡机怎么办 苹果手机不开机怎么办 手机开机后黑屏怎么办 苹果x手机黑屏怎么办 苹果7手机黑屏怎么办 苹果触控不灵敏怎么办 收银机触屏失灵怎么办 手机屏一半失灵怎么办 苹果六手机屏幕失灵怎么办 苹果5s卡怎么办 苹果5很卡怎么办 笔记本屏幕卡顿怎么办 手机外屏幕失灵怎么办 6p手机屏幕失灵怎么办 home键指纹失灵怎么办 小米触屏不灵敏怎么办 vivo手机音量小怎么办 iphone尾插松动怎么办 充电头接触不良怎么办 苹果充电口松动怎么办 苹果手机速度慢怎么办 苹果6手机屏幕失灵怎么办 手机膜有静电怎么办 手机充电带静电怎么办 苹果6锁屏键坏了怎么办 ipad触摸屏乱点怎么办