dynamic资源加载Android
我该如何做到这一点:
我试图find一种方法来打开资源,只有在运行时确定的名称。
让我更详细地解释一下
我想要在应用程序apk中引用一堆其他XML文件的XML。
为了说明的目的,假设主XML是main.xml,其他XML是file1.xml file2.xml,fileX.xml。
我想要的是读取main.xml,提取我想要的XML名称(fileX.xml)。 然后读取fileX.XML。
我面对的问题是,我提取的formsmain.xml是一个string,我无法find一种方法来将其更改为R.raw.nameOfTheFile
任何人有一个想法?
我不想:
- 在一个巨大的XML文件中重新组合一切
- 在一个巨大的开关情况下,将一个数字/string链接到资源ID的硬编码main.xml
我没有使用它的原始文件或XML布局文件,但对于可绘制我使用这个:
getResources().getIdentifier("fileX", "drawable","com.yourapppackage.www");
获取资源的标识符(R.id)。 你需要用别的东西replacedrawable,也许raw
或layout
(未经testing)。
我写了这个方便的小帮手方法来封装这个:
public static String getResourceString(String name, Context context) { int nameResourceID = context.getResources().getIdentifier(name, "string", context.getApplicationInfo().packageName); if (nameResourceID == 0) { throw new IllegalArgumentException("No resource string found with name " + name); } else { return context.getString(nameResourceID); } }
还有另一种方法:
int drawableId = R.drawable.class.getField("file1").getInt(null);
根据这个博客,它比使用getIdentifier快5倍。