Android:资源修改后的drawable id更改

时间:2011-07-13 10:57:46

标签: android database resources gallery drawable

我有一个Android应用程序,它使用一个gallery组件来选择一个图标并将其分配给一个按钮 图标集位于res/drawable文件夹中,可以在图库中使用指南的典型适配器进行访问:

private Integer[] Imgid = {
   R.drawable.icon_home,
   R.drawable.icon_home2,
   ...
}

选择图标后,我将设置存储在ID为按钮和可绘制的数据库中 所有工作都已完成,但我注意到如果我想要添加或修改我的应用程序的一般图标集或资源,旧资源的ID可能会发生变化,因此db中的首选项会指向错误的图标。 /> 有没有办法强制R类的旧ID,以便它们将来不会改变?或者是否有另一种方法来管理组件厨房的项目与另一个属性而不是ID? (也许是字符串名称和反射?)

提前致谢

3 个答案:

答案 0 :(得分:20)

如果您不打算更改,可以将drawable的名称存储在数据库中。 getResourceEntryName返回资源ID中的名称:

Resources resources = getResources();
String name = resources.getResourceEntryName(R.drawable.icon);

您可以使用getIdentifier

从名称中取回资源ID
int resId = resources.getIdentifier(name, "drawable", "your.package.name");

答案 1 :(得分:2)

您不能将static int用于资源标识符,但是您应该查看两个方法od Resources class:

getIdentifier()

getresourceName()

答案 2 :(得分:0)

您不应该依赖R.drawable.*属性的实际值 改为创建自己的ID(例如1对应R.drawable.icon_home,2对应R.drawable.icon_home2

修改
字符串名称和反射也应该起作用,但是你只有几个图标可能有点过分。