将Android共享首选项值从String更改为Int

365*_*uns 7 android sharedpreferences

我正在更新我的Android应用.该应用程序从我的服务器检索数据,其中数据是用户ID.用户id是一个数字(整数),但它作为字符串从服务器到达,例如"1234".在旧版本中,我将此用户ID保存为我的共享偏好中的字符串,但现在我回头看它,我不喜欢这样,并希望将其保存为整数,因为它应该是.

到目前为止很简单.我只使用putInt/getInt而不是putString/getString.问题是当前使用该应用程序的所有人都将其共享首选项中保存的值作为字符串,然后当他们更新应用程序时,新版本的应用程序将开始尝试使用getInt获取旧版本的值版本保存为字符串.

什么是避免任何错误的最佳方法,并确保两个应用程序版本之间的平滑过渡?

谢谢.

Pre*_*exx 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();
}
Run Code Online (Sandbox Code Playgroud)