数据储存和访问—登录记住密码功能

数据存储和访问—登录记住密码功能

实验目的

1、掌握SharedPreferences类,这个类可以实现简单的存储,主要用于保存窗口状态

实验效果

     

 

主要代码

LoginActivity

package com.example.minitwittersimulate;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class LoginActivity extends Activity {

	static String YES = "yes";
	static String NO = "no";
	private CheckBox checkBox1;
	private Button login;
	private EditText edtuser, edtpsd;
	static String name, password;
	private String isMemory = "";// isMemory变量用来判断SharedPreferences有没有数据,包括上面的YES和NO
	private String FILE = "saveUserNamePwd";// 用于保存SharedPreferences的文件
	private SharedPreferences sp = null;// 声明一个SharedPreferences

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_login);

		login = (Button) findViewById(R.id.btnLogin);
		edtuser = (EditText) findViewById(R.id.etUsername);
		edtpsd = (EditText) findViewById(R.id.etPassword);
		checkBox1 = (CheckBox) findViewById(R.id.cbRememberPass);
		sp = getSharedPreferences(FILE, MODE_PRIVATE);
		isMemory = sp.getString("isMemory", NO);
		// 进入界面时,这个if用来判断SharedPreferences里面name和password有没有数据,有的话则直接打在EditText上面
		if (isMemory.equals(YES)) {
			name = sp.getString("name", "");
			password = sp.getString("password", "");
			edtuser.setText(name);
			edtpsd.setText(password);
		}
		Editor editor = sp.edit();
		editor.putString(name, edtuser.toString());
		editor.putString(password, edtpsd.toString());
		editor.commit();
		// 触击登录按钮,执行remenber方法文本框里的信息重新写入SharedPreferences里面覆盖之前的,去除掉勾选框,触击登录按钮执行remenber方法就将之前保存到SharedPreferences的数据清除了
		login.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				name = edtuser.getText().toString();
				password = edtpsd.getText().toString();
				remenber();
				Intent it = new Intent(LoginActivity.this, MainActivity.class);// 跳转
				startActivity(it);
			}
		});
	}

	// remenber方法用于判断是否记住密码,checkBox1选中时,提取出EditText里面的内容,放到SharedPreferences里面的name和password中
	public void remenber() {
		if (checkBox1.isChecked()) {
			if (sp == null) {
				sp = getSharedPreferences(FILE, MODE_PRIVATE);
			}
			Editor edit = sp.edit();
			edit.putString("name", edtuser.getText().toString());
			edit.putString("password", edtpsd.getText().toString());
			edit.putString("isMemory", YES);
			edit.commit();
		} else if (!checkBox1.isChecked()) {
			if (sp == null) {
				sp = getSharedPreferences(FILE, MODE_PRIVATE);
			}
			Editor edit = sp.edit();
			edit.putString("isMemory", NO);
			edit.commit();
		}
	}
}
实验反思

不断加强读代码的能力,多看案例;

提高相关方法的熟练程度;

不能忽视细节;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值