利用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文件