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,也许rawlayout (未经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倍。