在这里和大家分享一下如何使用SharedPreferences来实现记住密码的功能。
一、效果图:
二、思路:
在EditText中输入密码,点击Button按钮保存密码,保存后的密码在TextView中显示出来。
三、基本实现
1、先来定义UI
<EditText
android:layout_marginTop="30dp"
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ed_text_bg"
android:hint="@string/et_hint"
android:textSize="@dimen/et_hint_size" />
<Button
android:id="@+id/btn_save"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:padding="20dp"
android:text="保存密码" />
<TextView
android:id="@+id/tv_show"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:gravity="center"
android:textColor="@color/color_main"
android:textSize="@dimen/tv_text_size" />
2、后台实现
private EditText mEtPassword;
private Button mBtnSave;
private SharedPreferences sp; //定义SharedPreferences
private SharedPreferences.Editor ed;//定义SharedPreferences.Editor
private TextView tv_show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
//初始化视图
private void initView() {
mEtPassword = (EditText) findViewById(R.id.et_password);
mBtnSave = (Button) findViewById(R.id.btn_save);
tv_show = findViewById(R.id.tv_show);
sp = getSharedPreferences("password", Activity.MODE_PRIVATE);
ed = sp.edit();
mBtnSave.setOnClickListener(this);
}
//点击事件
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
submit();
break;
}
}
//重写onStart()方法,该方法在退出应用后,再次进入Activity时加载
@Override
protected void onStart() {
super.onStart();
String password = sp.getString("password", "");
tv_show.setText("您的密码为:" +password);
}
private void submit() {
//获取输入的密码
String password = mEtPassword.getText().toString().trim();
//判断EditText是否为空
if (TextUtils.isEmpty(password)) {
Toast.makeText(this, "password不能为空", Toast.LENGTH_SHORT).show();
return;
} else {
//保存密码
ed.putString("password", password);
//提交密码
ed.commit();
Toast.makeText(this, "密码保存成功", Toast.LENGTH_SHORT).show();
}
}
四、解析:
getSharedPreferences()方法,这个是用来创建SharedPreferences用的,它有俩个参数,第一个代表生成的文件的名字,第二个代表模式,我们填写 Activity.MODE_PRIVATE。
调用SharedPreferencessp对象的edit()方法得到一个SharedPreferences.Editor 的实例,也就是ed,然后调用putString()方法来存储数据,它的参数是一个键值对。
最后通过SharedPreferences对象**(sp)**的getString()方法来获取存储的数据。至于为什么要写在onStart()方法中上文已经讲述,这里不再多说。