SharedPreferences
SharedPreferences存储
SharedPreferences只能保存简单类型的数据,例如四种基本类型(int,float,long,boolean)+String。如果需要存取比较复杂的数据类型比如类或者图像,则需要对这些数据进行编码,通常将其转换成Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。
最终会在手机的/data/data/package_name/shared_prefs/目录下以xml的格式存在
例子:实现登陆保存用户名和密码,实现自动登陆功能。
public class StoreActivity extends BaseActivity{ //BaseActivity这个是继承AppCompatActivity
private EditText et_user; private EditText et_pass; private Button login; private SharedPreferences sf; private String mr="mr", pass="123456"; @Override protected int getLayoutId() { return R.layout.activity_store; } @Override protected void initView() { et_user = findViewById(R.id.et_user); et_pass = findViewById(R.id.et_pass); login = findViewById(R.id.login); //获取SharedPreferences sf = getSharedPreferences("mis",MODE_PRIVATE);//MODE_PRIVATE本应用可用 } @Override protected void initData() { //操作1.自动登录功能:获取保存的登录信息直接登录 String username = sf.getString("username",null); String password = sf.getString("password",null); //存储的用户名密码如果存在自动登录,如果没有手动登录 if(username!=null && password!=null){ //并且等于数据库中登录的账号密码 if(username.equals(mr) && password.equals(pass)){ //跳转 Intent intent =new Intent(StoreActivity.this,BottomNavigationBarActivity.class); startActivity(intent); } }else{ //手动登录:点击登录的时候进行登录并存储数据 login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String in_user = et_user.getText().toString(); String in_pass = et_pass.getText().toString(); SharedPreferences.Editor editor = sf.edit(); //editor对象 if(in_user.equals(mr) && in_pass.equals(pass)){ //保存数据 editor.putString("username",in_user); editor.putString("password",in_pass); editor.commit();
//跳转 Intent intent =new Intent(StoreActivity.this,BottomNavigationBarActivity.class); startActivity(intent); Toast.makeText(StoreActivity.this,"已保存账号密码!",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(StoreActivity.this,"账号或密码不正确!",Toast.LENGTH_SHORT).show(); } } }); } } }