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

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

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

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

谢谢。

Solutions Collecting From Web of "将Android共享首选项值从string更改为Int"

类似于你的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(); } 

这很简单

 int userid = Integer.parseInt( preferences.getString("userid", "")); 

首先把你的string用户id转换成整数,

 int uid=Integer.parseInt("1234");//here is your string user id in place of 1234. 

然后用putExtra(key,intValue)将uid写入您的共享首选项。

而已。