<span style="font-family: Arial, Helvetica, sans-serif;">我们在写登录界面的时候经常会遇见输入密码下面有一个复选框记住密码,但是我个人感觉这个东西看起来简单,但实现起来还是有一点点小麻烦的,不过我已经操作出来供各位观看,下面直接上代码:</span>
editText = (EditText) findViewById(R.id.edit_yonghuming);
editText1 = (EditText) findViewById(R.id.ed_mima);
//s实例化这个存储 ,样式为私有的
sp = getSharedPreferences(FILE, MODE_PRIVATE);
//d得到这个editor
editor = sp.edit();
//拿到一个字符串ismemory,用他来判断有没有数据,
isMemory = sp.getString("hh", NO);
//判断有没有数据,有的话
if (isMemory.equals(YES)) {
//第一次肯定是数据为空的
name = sp.getString("name", "");
password = sp.getString("password", "");
//把这两个写到edittext文本上,同样也显示为空
editText.setText(name);
editText1.setText(password);
checkBox.setChecked(true);
} else {
checkBox.setChecked(false);
}
//这个时候添加到这个数据库中
editor.putString(name, editText.toString());
editor.putString(password, editText1.toString());
//并提交存储
editor.commit();
buttons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
postData();
//得到文本上的字符串
name = editText.getText().toString();
password = editText1.getText().toString();
remenber();
}
});
checkBox1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (checkBox1.isChecked()) {
editText1.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
editText1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
}
public void remenber() {
//判断如果为勾上
if (checkBox.isChecked()) {
//在如果存储中也为空
if (sp == null) {
//从新获取文件夹中数据
sp = getSharedPreferences(FILE, MODE_PRIVATE);
} else {
checkBox.setChecked(true);
}
//添加数据覆盖之前的,放到name 和password中
editor.putString("name", editText.getText().toString());
editor.putString("password", editText1.getText().toString());
editor.putString("hh", YES);
//并提交存储
editor.commit();
//否则不勾的话
} else if (!checkBox.isChecked()) {
//在如果文件中为空
if (sp == null) {
//y也要获取一下
sp = getSharedPreferences(FILE, MODE_PRIVATE);
}
//添加数据
editor.putString("hh", NO);
//并提交存储
editor.commit();
}
好了这样的话就完成了,中间的checkBox1是做了一下是否显示密码