SharedPreferences的使用案例之QQ登录

  在android手机中,可以通过一个“QQ登录”的案例来演示如何使用SharedPreferences存储数据。  

    1.创建一个名为“QQ登录”的应用程序,将包名修改为com.example.administrator.case_login,设计用户交互界面,布局文件如下:

      login_top.xml:

 

<?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="wrap_content"
    android:background="@drawable/logintop_roundbg"
    android:padding="@dimen/activity_horizontal_margin">

    <EditText
        android:id="@+id/etName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/icon_user"
        android:drawablePadding="10dp"
        android:ems="10"
        android:hint="@string/etName">
        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/etName"
        android:drawableLeft="@drawable/icon_pass"
        android:drawablePadding="10dp"
        android:ems="10"
        android:hint="@string/etPass"
        android:inputType="textPassword">
        <requestFocus />
    </EditText>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/etPassword">

        <CheckBox
            android:text="记住密码"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/cbIsRemeberPass"
            android:textSize="20sp"
            android:layout_weight="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_select"
            android:text="@string/btnLogin" />

    </LinearLayout>

</RelativeLayout>

  activity_main.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <TextView
        android:text="Welcome you"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
       android:layout_alignHorizontal="true"
        android:textSize="40sp"/>
</LinearLayout>
SharedPreferences的使用案例之QQ登录

布局文件中TextView用于提示用户名和密码的文字,EditText用于输入,最后在线性布局下方设置了一个按钮Button,用于单击保存用户名和密码。
  2.编写界面交互代码
  在loginActivity中,实现当用户输入完QQ号码和密码后,选择记住密码,单击“登录”按钮时调用Utils.saveInfo()方法保存QQ密码。
  
package com.example.administrator.case_login;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends AppCompatActivity{
    private EditText etName;
    private EditText etPassword;
    private SharedPreferences sharePreferences;
    private CheckBox cbIsRememberPass;

    @Override
    protected void onCreate(Bundle saveInstanceState){
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_login);

        initViews();
        sharePreferences=getSharedPreferences("rememberpassword", Context.MODE_PRIVATE);
        boolean isRemember=sharePreferences.getBoolean("rememberpassword",false);
        if(isRemember){
            String name=sharePreferences.getString("name","");
            String password=sharePreferences.getString("password","");
            etName.setText(name);
            etPassword.setText(password);
            cbIsRememberPass.setChecked(true);
        }
    }
public void initViews(){
    etName=(EditText) findViewById(R.id.etName);
    etPassword=(EditText) findViewById(R.id.etPassword);
}



    public void login(View view){
    String name=etName.getText().toString();
    String password=etPassword.getText().toString();
    if ("admin".equals(name)&&"123456".equals(password)){
        SharedPreferences.Editor editor=sharePreferences.edit();
        if (cbIsRememberPass.isChecked()){
         editor.putBoolean("rememberpassword",true);
         editor.putString("name",name);
         editor.putString("password",password);
     }else{
         editor.clear();
     }
        editor.commit();
        Intent intent=new Intent(this,MainActivity.class);
        startActivity(intent);
        finish();
     }else {
        Toast.makeText(this,"账号或密码有误",Toast.LENGTH_LONG).show();
    }
    }
}

 Mainactivity。java:
package com.example.administrator.case_login;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

相关知识点:
使用SharedPreferences类存储数据时,首先需要通过conyext.getSharedPreferences(Stringname.int mode)获取SharedPreferences的实例对象。
SharedPreferences.Editor clear()--------------清空SharedPreferences中的所有数据
boolean.commit()---------------编辑结束,调用该方法提交
SharedPreferences.Editor.edit()---------------创建一个Editor对象
SharedPreferences.Editor remove(String key)-------------删除SharedPreferences指定key所对应的数据