- SharePreferences是什么
- 如何存储数据
- 如何读取数据
案例–登录页面记住密码
SharePreferences是什么
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。
存储数据
得到SharedPreference对象之后,就可以开始向SharedPreference文件中存储数据了,主要有三步:
使用SharedPreference对象的edit()方法来获取一个SharedPreference.Editor对象
- 向SharedPreference.Editor对象中添加数据,比如添加一个布尔型数据就是用putBoolean方法,添加一个字符串就是用putString()方法,以此类推
- 调用commit()方法将添加的数据提交,从而完成数据存储操作
private SharePreferences sp;
//创建一个SharePreferences接口的实例对象,将生成一个XML名称为demo_01,模式为MODE_PRIVATE
sp=this.getSharedPreferences("demo_01",MODE_PRIVATE);
//通过edit()方法创建一个SharePreferences.Editor类的实例对象
SharePreferences.Editor editor =sp.edit();
//通过putString()方法,将数据存入文件中
editor.putString("name","sssss");
//用commit()方法予以正式提交
editor.commit();
读取数据
SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
String name = sp.getString("name", null);
int age = sp.getInt("age", 0);
案例
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
private EditText name_ed, psw_ed;
private Button login_btn, reg_btn;
private CheckBox checkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
bindID();
SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
int checked = sharedPreferences.getInt("checked", 0);
if (checked == 1) {
String name = sharedPreferences.getString("username", "");
String psw = sharedPreferences.getString("psw", "");
name_ed.setText(name);
psw_ed.setText(psw);
checkBox.setChecked(true);
} else {
checkBox.setChecked(false);
}
}
private void bindID() {
name_ed = findViewById(R.id.ed1);
psw_ed = findViewById(R.id.ed2);
login_btn = findViewById(R.id.btn1);
reg_btn = findViewById(R.id.btn2);
checkBox = findViewById(R.id.cb);
login_btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
if (checkBox.isChecked()) {
String username = name_ed.getText().toString();
String password = psw_ed.getText().toString();
editor.putString("username", username);
editor.putString("psw", password);
editor.putInt("checked", 1);
} else {
editor.putString("username", "");
editor.putString("psw", "");
editor.putInt("checked", 0);
}
editor.commit();
break;
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main2Activity">
<EditText
android:id="@+id/ed1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/ed2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<Button
android:id="@+id/btn1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="登录" />
<Button
android:id="@+id/btn2"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn1"
android:text="注册" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="记住密码"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
</LinearLayout>