我有一个Android应用程序,它使用一个gallery组件来选择一个图标并将其分配给一个按钮
图标集位于res/drawable
文件夹中,可以在图库中使用指南的典型适配器进行访问:
private Integer[] Imgid = {
R.drawable.icon_home,
R.drawable.icon_home2,
...
}
选择图标后,我将设置存储在ID为按钮和可绘制的数据库中 所有工作都已完成,但我注意到如果我想要添加或修改我的应用程序的一般图标集或资源,旧资源的ID可能会发生变化,因此db中的首选项会指向错误的图标。 /> 有没有办法强制R类的旧ID,以便它们将来不会改变?或者是否有另一种方法来管理组件厨房的项目与另一个属性而不是ID? (也许是字符串名称和反射?)
提前致谢
答案 0 :(得分:20)
如果您不打算更改,可以将drawable的名称存储在数据库中。 getResourceEntryName
返回资源ID中的名称:
Resources resources = getResources();
String name = resources.getResourceEntryName(R.drawable.icon);
您可以使用getIdentifier
int resId = resources.getIdentifier(name, "drawable", "your.package.name");
答案 1 :(得分:2)
答案 2 :(得分:0)
您不应该依赖R.drawable.*
属性的实际值
改为创建自己的ID(例如1对应R.drawable.icon_home
,2对应R.drawable.icon_home2
)
修改强>
字符串名称和反射也应该起作用,但是你只有几个图标可能有点过分。