[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.输入账号和密码
[android][SharedPreferences]用户名和用户密码登陆和注册_第1张图片
2.注册
[android][SharedPreferences]用户名和用户密码登陆和注册_第2张图片
3.验证用户名重复登录
[android][SharedPreferences]用户名和用户密码登陆和注册_第3张图片
4.选择记住密码并登陆
[android][SharedPreferences]用户名和用户密码登陆和注册_第4张图片
5.登陆成功
[android][SharedPreferences]用户名和用户密码登陆和注册_第5张图片
6.重新打开app,账号和密码都已经填入
[android][SharedPreferences]用户名和用户密码登陆和注册_第6张图片


下面是完整的用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文件



    

        

            
        

        

你可能感兴趣的:(android)