Android: drawable id change after resources modify

纵饮孤独 提交于 2019-12-03 05:27:33

You can store the name of the drawable in the database if you don't plan to change that. getResourceEntryName returns the name from the resource id:

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

And you can get back the resource id from the name with getIdentifier:

int resId = resources.getIdentifier(name, "drawable", "your.package.name");

You can't use static int for resource identifier, however you should look at two methods od Resources class:

getIdentifier()

getresourceName()

You shouldn’t rely on the actual values of the R.drawable.* attributes.
Create your own ids instead (for example 1 correspond to R.drawable.icon_home and 2 correspond to R.drawable.icon_home2)

Edit:
String name and reflection should work too, but it’s probably a little overkill you have only a few icons.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!