How do you save/store objects in SharedPreferences on Android?

后端 未结 20 2711
野趣味
野趣味 2020-11-22 13:35

I need to get user objects in many places, which contain many fields. After login, I want to save/store these user objects. How can we implement this kind of scenario?

<
20条回答
  •  被撕碎了的回忆
    2020-11-22 14:19

    // SharedPrefHelper is a class contains the get and save sharedPrefernce data
    public class SharedPrefHelper {
    
        // save data in sharedPrefences
        public static void setSharedOBJECT(Context context, String key, 
                                               Object value) {
    
            SharedPreferences sharedPreferences =  context.getSharedPreferences(
                    context.getPackageName(), Context.MODE_PRIVATE);
    
            SharedPreferences.Editor prefsEditor = sharedPreferences.edit();
            Gson gson = new Gson();
            String json = gson.toJson(value);
            prefsEditor.putString(key, json);
            prefsEditor.apply();
        }
    
        // get data from sharedPrefences 
        public static Object getSharedOBJECT(Context context, String key) {
    
             SharedPreferences sharedPreferences = context.getSharedPreferences(
                               context.getPackageName(), Context.MODE_PRIVATE);
    
            Gson gson = new Gson();
            String json = sharedPreferences.getString(key, "");
            Object obj = gson.fromJson(json, Object.class);
            User objData = new Gson().fromJson(obj.toString(), User.class);
            return objData;
        }
    }
    
    // save data in your activity
    
    User user = new User("Hussein","h@h.com","3107310890983");        
    SharedPrefHelper.setSharedOBJECT(this,"your_key",user);        
    User data = (User) SharedPrefHelper.getSharedOBJECT(this,"your_key");
    
    Toast.makeText(this,data.getName()+"\n"+data.getEmail()+"\n"+data.getPhone(),Toast.LENGTH_LONG).show();
    
    // User is the class you want to save its objects
    
    public class User {
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        private String name,email,phone;
        public User(String name,String email,String phone){
              this.name=name;
              this.email=email;
              this.phone=phone;
        }
    }
    
    // put this in gradle
    
    compile 'com.google.code.gson:gson:2.7'
    

    hope this helps you :)

提交回复
热议问题