Recurso dynamic Cargando Android

Cómo puedo hacer esto:

Estoy tratando de encontrar una forma de abrir recursos cuyo nombre se determina solo en tiempo de ejecución.

Déjame explicarte en más detalles

Quiero tener un XML que haga referencia a muchos otros archivos XML en la aplicación apk.

A los efectos de explicar, digamos que el XML principal es main.xml y el otro XML es file1.xml file2.xml, fileX.xml.

Lo que quiero es leer main.xml, extraer el nombre del XML que quiero (fileX.xml) por ejemplo. Y luego lea fileX.XML.

El problema que enfrento es que lo que extraigo de main.xml de formulario es una cadena y no puedo encontrar una manera de cambiar eso a R.raw.nameOfTheFile

¿Alguien tiene una idea?

No quiero:

  • reagrupa todo en un gran archivo XML
  • hardcode main.xml en una gran caja de conmutadores que vincula un número / cadena a la ID del recurso

No lo he usado con archivos sin procesar o con archivos de diseño xml, pero para los dibujables uso esto:

getResources().getIdentifier("fileX", "drawable","com.yourapppackage.www"); 

para obtener el identificador (R.id) del recurso. Tendría que reemplazar Drawable con otra cosa, tal vez en raw o layout (no probado).

Escribí este práctico método de ayuda pequeña para encapsular esto:

 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); } } 

Hay otro método:

 int drawableId = R.drawable.class.getField("file1").getInt(null); 

Según este blog , es 5 veces más rápido que usar getIdentifier.