我目前在android中使用共享prefs来保存我的一些设置。这很好用,但我遇到了一个小问题。 在我的共享首选项中,我还保存了一些图像资源ID,以便我可以在新应用启动后稍后(在应用程序被销毁之后)访问它们。 现在显然,一旦我将新资源添加到我的资源树并再次构建应用程序(也就是更新),ID就会发生变化,并且我正在使用之前保存的ID访问不同的资源。
您是否有想法/方法如何在不丢失链接的情况下保存图像资源ID(或任何其他标识符)?
非常感谢你。
答案 0 :(得分:2)
R
值会经常变化,并不是稳定的。
最佳解决方案是让您在应用中保存具有实际商业含义的SharedPreferences
内容,然后将这些值映射到可用于呈现该信息的drawable和其他项目。这样,如果您决定需要重构和重命名这些drawable,那么就不会破坏数据存储。
如果您希望懒惰或者其他人愿意规定您永远不能更改可绘制的名称,您可以在getResourceEntryName()
对象上使用Resources
之类的内容(您可以通过getResources()
,调用任何Context
),找到给定其ID的资源的名称,并保留名称。然后,您可以使用getIdentifier()
对象上的Resources
稍后查找相应的R.drawable
值。
答案 1 :(得分:0)
您可以将资源名称保存在共享首选项中,并通过以下方式检索Drawable:
Drawable drawable = getResources().getDrawable(getResources().getIdentifier(yourDrawableName, "drawable", getPackageName()));