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(); } } }); } } }
原文地址:https://www.cnblogs.com/xuqp/p/9856541.html