und*_*oid 3 java android gson sharedpreferences
在我的应用程序中,我有一个自定义User类,它包含一些常规数据(名称等...).我需要保存该对象并随时随地在应用程序的其他页面中获取它.我public final class GeneralMethods用很多方法制作了一个助手类,我经常使用它(当然是静态的).
为了使用Gson库保存数据Im .我做了这个方法:
public static void saveData(Context con, String variable, String data)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
prefs.edit().putString(variable, data).apply();
}
Run Code Online (Sandbox Code Playgroud)
要保存对象,我使用此方法如下:
Gson gson = new Gson();
String stringUser = gson.toJson(newUser);
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);
Run Code Online (Sandbox Code Playgroud)
要重新加载数据,我正在使用这个静态方法:
public static String getData(Context con, String variable, String defaultValue)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
String data = prefs.getString(variable, defaultValue);
return data;
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何获取数据,这是我到目前为止所做的:
Gson gson = new Gson();
String user="";
String value="";
user = GeneralMethods.getData(SplashScreenActivity.this,value,"userObject");
Run Code Online (Sandbox Code Playgroud)
我正在努力解决这个问题getData,如何解析数据从String回到User类型?
编辑
我尝试了下面的建议,我总是得到NULL.也许我不以正确的方式保存对象?
EDIT2
似乎我没有正确生成对象,因此没有任何东西被保存.这是用户"Singleton"类:
public class User implements Serializable {
private static User userInstance=null; //the only instance of the class
private static String userName; //userName = the short phone number
private User(){}
public static User getInstance(){
if(userInstance ==null){
userInstance = new User();
}
return userInstance;
}
public static User getUserInstance() {
return userInstance;
}
public String getUserName(){
return this.userName;
}
public static void setUserName(String userName) {
User.userName = userName;
}
public static void init(String _userName) {
User.setUserName(_userName);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我如何使用相关数据(用户名作为构造函数参数)设置对象:
User.init(name);
Run Code Online (Sandbox Code Playgroud)
这是我如何将对象转换为String:
Gson gson = new Gson();
String stringUser = gson.toJson(User.getInstance());
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);
Run Code Online (Sandbox Code Playgroud)
用以下替换现有的User类
public class User implements Serializable
{
private static User userInstance = null; // the only instance of the class
private String userName; // userName = the short phone number
private User(){}
public static User getInstance()
{
if (userInstance == null)
{
userInstance = new User();
}
return userInstance;
}
public String getUserName()
{
return userName;
}
public void setUserName(String p_userName)
{
userName = p_userName;
}
@Override
public String toString()
{
return "User [userName=" + getUserName() + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
初始化用户名
User m_user = User.getInstance();
m_user.setUserName(name);
Run Code Online (Sandbox Code Playgroud)
将对象转换为String
Gson gson = new Gson();
String stringUser = gson.toJson(m_user);
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20665 次 |
| 最近记录: |