我正在更新我的Android应用。该应用程序从我的服务器检索数据,其中数据是用户ID。用户id是一个数字(整数),但它作为字符串从服务器到达,例如“1234”。在旧版本中,我将此用户ID保存为我的共享偏好中的字符串,但现在我回头看它,我不喜欢这样,并希望将其保存为整数应该是。
到目前为止很简单。我只使用putInt / getInt而不是putString / getString。问题是当前使用该应用程序的所有人都将其共享首选项中保存的值作为字符串,然后当他们更新应用程序时,新版本的应用程序将开始尝试使用getInt获取旧版本的值版本保存为字符串。
避免任何错误的最佳方法是什么,并确保两个应用程序版本之间的平滑过渡?
感谢。
答案 0 :(得分:5)
你的onCreate中有类似的东西:
try{
prefs.getInt("key", 0);
}catch (ClassCastException e){
Integer uid = Integer.parseInt(prefs.getString("key", null);
if(uid != null)
prefs.edit().putInt("key", uid).commit();
}
答案 1 :(得分:1)
这就像
一样简单int userid = Integer.parseInt( preferences.getString("userid", ""));
答案 2 :(得分:0)
首先将字符串用户ID转换为整数,如
int uid=Integer.parseInt("1234");//here is your string user id in place of 1234.
然后使用putExtra(key,intValue)将uid写入共享首选项。
就是这样。