获得SharedPreferences储存对象的三种方法:
Cntext类中的getSharedPreferences()方法
Activity 类中的 getPreferences()方法
PreferenceManager 类中的 getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
得到了 SharedPreferences对象之后,就可以开始向SharedPreferences文件中存储数据了,主要可以分为3步实现。
调用 SharedPreferences 对象的edit()方法来获取一个 SharedPreferences. Editor 对象。
向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用 putBoolean()方法,添加一个字符串则使用putString()方法,以此类推。
调用apply()方法将添加的数据提交,从而完成数据存储操作。
存储
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putString("name", "Tom");
editor.putInt("age", 20);
editor.putBoolean("married", false);
editor.apply();
![](https://i-blog.csdnimg.cn/blog_migrate/70239b023b7cec26ee8838756c29caea.png)
可以点击右下角这个,然后找到这个目录,就可以看到。
![](https://i-blog.csdnimg.cn/blog_migrate/7a10a1bb67de7397802c701b3274eae7.png)
读取
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");
int age = pref.getInt("age",0);
boolean married = pref.getBoolean("married",false);
Log.d("MainActivity","name is :" + name);
Log.d("MainActivity","age is :" + age);
Log.d("MainActivity","married is :" + married);
之前的登录活动,增加记住密码功能:
public class LoginActivity extends BaseActivity {
private EditText accountEidt ;
private EditText passwordEidt ;
private Button loginButton ;
//新增记住密码
private SharedPreferences pref;
private SharedPreferences.Editor editor;
private CheckBox rememberPass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
accountEidt = (EditText)findViewById(R.id.account);
passwordEidt = (EditText)findViewById(R.id.password);
loginButton = (Button)findViewById(R.id.login);
//新增记住密码
pref = PreferenceManager.getDefaultSharedPreferences(this);
rememberPass = (CheckBox)findViewById(R.id.remember_pass);
boolean isRemember = pref.getBoolean("remember_password",false);
if(isRemember){
String account = pref.getString("account","");
String password = pref.getString("password","");
accountEidt.setText(account);
passwordEidt.setText(password);
rememberPass.setChecked(true);
}
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String account = accountEidt.getText().toString();
String password = passwordEidt.getText().toString();
if(account.equals("admin") && password.equals("123456"))
{
//新增记住密码
editor = pref.edit();
if(rememberPass.isChecked()){
editor.putBoolean("remember_password",true);
editor.putString("account",account);
editor.putString("password",password);
}else{
editor.clear();
}
editor.apply();
Intent open_after_login_intent = new Intent(LoginActivity.this, AnotherActivity.class);
startActivity(open_after_login_intent);
finish();
}
else
{
Toast.makeText(v.getContext(), "账号或密码错误", Toast.LENGTH_SHORT).show();
}
}
});
}
}