Get string de Strings.xml por una variable

Quiero obtener una cadena de strings.xml. Yo sé cómo hacer esto. Pero mi problema es otra cosa: tengo una variable de cadena que cambia cada vez, y cada vez que cambia, quiero mirar strings.xml y comprobar si esa variable String existe en Strings.xml, a continuación, obtener texto.

por ejemplo:

String title="sample title" \\ which changes String city= "sample city" String s = getResources().getString(R.string.title); 

En la tercera línea: title es una String, y no hay ningún "title" llamado String en Strings.xml ¿cómo puedo hacer esto? por favor, ayúdame

Por lo que puedo decir, puede utilizar public int getIdentifier (String name, String defType, String defPackage) . Sin embargo, su uso se desaconseja.

Para usarlo (no lo he hecho pero había leído una vez sobre el método) probablemente necesitaría:

 int identifier = getResources().getIdentifier ("title","string","your.package.name.here"); if (identifier!=0){ s=getResources().getString(identifier); } else{ s="";//or null or whatever } 

Una cosa que podría hacer para obtener cadenas de las claves dinámicas es hacer 2 arreglos de cadena y ponerlos en un HashMap.

Arrays.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="title_keys"> <item>title1</item> <item>title2</item> <item>title3</item> </string-array> <string-array name="title_values"> <item>Real Title 1</item> <item>Real Title 2</item> <item>Real Title 3</item> </string-array> </resources> 

Y en su código:

 String[] titleKeys = getResources().getStringArray(R.array.title_keys); String[] titleValues = getResources().getStringArray(R.array.title_values); HashMap<String, String> titles = new HashMap<String, String>(); for(int i = 0; i < titleKeys.length; i++) { titles.put(titleKeys[i], titleValues[i]); } 

Por último, para obtener sus títulos de una clave dinámica:

 titles.get(titleFromSomewhere); 

No lo harías. Utiliza strings.xml para cadenas constantes. Lo que quieres hacer es una de dos cosas.

1) Usted quiere que una cadena sea constante, pero una de las pocas opciones (por ejemplo, un elemento en una lista de países). En este caso, coloque todas las opciones en strings.xml y mantenga la que está usando actualmente en un int. Cuando necesite obtener la cadena real, use getString ().

2) Realmente puede ser cualquier cadena (por ejemplo, un nombre introducido por el usuario). En ese caso no va en strings.xml en absoluto, usted apenas utiliza una variable de la secuencia.

Esto no se puede hacer, los recursos se convierten a ints únicos en R.java, y los que se utilizan para buscar los recursos reales de la cadena.

Así que R.string.title es en realidad algo así como 0x78E84A34 .

Puede escribir su propia clase que gestiona las cadenas para usted utilizando un HashMap<String,String> para buscar cadenas completas para cadenas más cortas de "clave".

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.