Android Studio入学1-2:使用SharedPreferences记住账号密码

1、新建一个MySharedPreference 工具类
具体代码如下:

package com.example.login;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;

public class MySharedPreference {
    public static boolean saveUserInfo(Context context,String xmlName, String key, String value){
        try {
            SharedPreferences sp = context.getSharedPreferences(xmlName, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString(key, value);
            editor.commit();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public static String getUserInfo(Context context,String xmlName, String key){
        try {
            SharedPreferences sp = context.getSharedPreferences(xmlName,Context.MODE_PRIVATE);
            String value = sp.getString(key, null);
            if(!TextUtils.isEmpty(value)){
                return value;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

2、使用方法:

saveUserInfo(Context context,String xmlName, String key, String value)

Context context 可传入  MainActivity.this 参数
String xmlName 为保存的文件名
String key, String value 为键值对

3、示例:

在onCreate中从xml文件读取数据,回显在页面上,并开启按钮的监听器

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        loginButton = (Button) findViewById(R.id.loginButton);

        E_userName = (EditText) findViewById(R.id.userName);
        E_userPassword = (EditText) findViewById(R.id.userPassword);
        C_remember = (CheckBox) findViewById(R.id.checkBox);

        //第一次启动可能没有remember这个字段,需要进行处理(新增)
        try {
            String getr = MySharedPreference.getUserInfo(MainActivity.this, "user", "remember");
            Boolean aa = getr.equals("yes");
        } catch (Exception e) {
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "remember", "yes");
        }

        String getr = MySharedPreference.getUserInfo(MainActivity.this, "user", "remember");

        try {
            if (getr.equals("yes")) {
                userName = MySharedPreference.getUserInfo(MainActivity.this, "user", "userName");
                E_userName.setText(userName);
                userPassword = MySharedPreference.getUserInfo(MainActivity.this, "user", "userPassword");
                E_userPassword.setText(userPassword);
                C_remember.setChecked(true);
            }
        } catch (Exception e) {
            Log.e("error", "onCreate: error");
        }

        MyListener ML = new MyListener();
        loginButton.setOnClickListener(ML);

    }

在按键监听器中判断是否勾选,若勾选则记录数据到文件,否则清空

class MyListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {

        userName = E_userName.getText().toString();
        userPassword = E_userPassword.getText().toString();
        //按下按钮之后如果勾选记住,则写入到文件,否则清空
        if (C_remember.isChecked()) {
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "remember", "yes");
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "userName", userName);
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "userPassword", userPassword);
        } else {
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "remember", "no");
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "userName", "");
            MySharedPreference.saveUserInfo(MainActivity.this, "user", "userPassword", "");
        }
        //服务器校验
        //sendRequestsWithOkHttp();
        
    }
}

4、校验

在文件系统中可以看对应的数据有没有被改变
Android Studio入学1-2:使用SharedPreferences记住账号密码_第1张图片
Android Studio入学1-2:使用SharedPreferences记住账号密码_第2张图片

你可能感兴趣的:(安卓应用开发,java,android,studio)