[android][SharedPreferences]用户名和用户密码登陆和注册

利用SharedPreferences实现用户名和用户密码登陆和注册,登陆的同时可选择记住用户名和用户密码,注册是检验用户名是否重复注册等功能。


关键代码

1.实例化写入对象

final SharedPreferences mysp = getSharedPreferences("passport", MODE_PRIVATE)

类的实例化有两个参数 第一个参数是保存数据的文件名,第二个是文件的权限类型

2.保存数据

SharedPreferences.Editor editor = mysp.edit(); // 实例化一个编辑子类对象
editor.putString("username"+in_usename, in_usename); // 对应用户名和用户密码
editor.putString("password"+in_usename, in_password);
editor.commit(); //提交数据

说明:如果我们要保存账号和对应的密码,我们可以将putString的第一参数设置成username+“username”的字符串形式(谁的用户名,谁的密码),这样我们提取的时候,也可以使用username+“username”来提取用户名和密码

3.提取数据:

mysp.getString("password"+in_usename, null);//提取用户名和用户密码
mysp.getString("username"+in_usename, "");

效果图:
1.输入账号和密码
在这里插入图片描述
2.注册
在这里插入图片描述
3.验证用户名重复登录
在这里插入图片描述
4.选择记住密码并登陆
在这里插入图片描述
5.登陆成功
在这里插入图片描述
6.重新打开app,账号和密码都已经填入
在这里插入图片描述


下面是完整的用SharedPreferences实现保存用户名和用户密码的代码

package com.example.save;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button bt_logon = (Button)findViewById(R.id.logon);
        Button bt_land = (Button)findViewById(R.id.land);
        
        final CheckBox remember = (CheckBox)findViewById(R.id.checkBox1);
        final EditText usr = (EditText)findViewById(R.id.usename);
        final EditText password = (EditText)findViewById(R.id.password);
       
        //准备写入对象
        final SharedPreferences mysp = getSharedPreferences("passport", MODE_PRIVATE);
        
        //根据自动填入设置填入账号和密码
        boolean flag = mysp.getBoolean("ischecked", true);
        if (flag) {
        	System.out.println("22222");
        	usr.setText(mysp.getString("default_username", null));
        	password.setText(mysp.getString("default_password", null));
        }
        
        //注册部分
        bt_logon.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				   
				String in_usename = usr.getText().toString();
				String in_password = password.getText().toString();
			
				if (in_password.equals("")||in_usename.equals("")) {
					Toast.makeText(getApplicationContext(), "用户名或者密码未填写", 2).show();
				} else if (mysp.getString("username"+in_usename, "").equals("")) {
					SharedPreferences.Editor editor = mysp.edit();
					editor.putString("username"+in_usename, in_usename);
					editor.putString("password"+in_usename, in_password);
					editor.commit();
					Toast.makeText(getApplicationContext(), "注册成功", 2).show();
				} else {
					Toast.makeText(getApplicationContext(), "用户名已经存在", 2).show();
				}
				
				
			}
		});
        // 登陆部分
        bt_land.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				String in_usename = usr.getText().toString();
				String in_password = password.getText().toString();
//				System.out.println(mysp.getString("password", null)+"\n"+in_password);
				if (in_password.equals(mysp.getString("password"+in_usename, null))&&in_usename.equals(mysp.getString("username"+in_usename, ""))) {
					SharedPreferences.Editor editor = mysp.edit();
					//记住账号密码
					if (remember.isChecked()) {
						editor.putString("default_username",in_usename );
						editor.putString("default_password", in_password);
						editor.putBoolean("ischecked",true);
						
					} else {
						editor.putString("default_username",null );
						editor.putString("default_password", null);
						editor.putBoolean("ischecked", false);
						
					}
					editor.commit();
					Intent intent = new Intent();
					intent.putExtra("username", in_usename);
					intent.setClass(MainActivity.this, Second.class);
					startActivity(intent);
				} else {
					Toast.makeText(getApplicationContext(), "用户名或者密码错误", 2).show();
				}
				 
				
//				if (in_password!=""&&in_usename!="") {
//					
//				}
			}
		});
        		
    }

}

下面是登陆页面的xml文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.save.MainActivity"
    tools:ignore="MergeRootFrame" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <EditText
            android:id="@+id/usename"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textView1"
            android:layout_alignBottom="@+id/textView1"
            android:layout_alignLeft="@+id/password"
            android:ems="10" >

            <requestFocus />
        </EditText>

        <Button
            android:id="@+id/land"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/logon"
            android:layout_alignBottom="@+id/logon"
            android:layout_alignLeft="@+id/password"
            android:layout_marginLeft="23dp"
            android:text="登陆" />

        <Button
            android:id="@+id/logon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="186dp"
            android:layout_marginLeft="26dp"
            android:layout_toRightOf="@+id/land"
            android:text="注册" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/textView1"
            android:layout_below="@+id/usename"
            android:layout_marginTop="44dp"
            android:text="密码" />

        <EditText
            android:id="@+id/password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textView2"
            android:layout_alignBottom="@+id/textView2"
            android:layout_toRightOf="@+id/textView2"
            android:inputType="textPassword"
            android:ems="10" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="32dp"
            android:layout_marginTop="47dp"
            android:text="账号" />

        <CheckBox
            android:id="@+id/checkBox1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/textView2"
            android:layout_below="@+id/password"
            android:layout_marginTop="28dp"
            android:text="是否记住密码"/>

    </RelativeLayout>

</FrameLayout>
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页