¿Cómo poner variable dentro de recursos de cadena?

1 minuto de lectura

avatar de usuario
chicofawkes

¿Es posible poner variables dentro de recursos de cadena? Y si es así, ¿cómo los uso?

Lo que necesito es lo siguiente:

<string name="next_x_results">Next %X results</string>

y coloque un int en lugar de %X.

avatar de usuario
Yasin Bahtiyar

<string name="meatShootingMessage">You shot %1$d pounds of meat!</string>  


int numPoundsMeat = 123;
String strMeatFormat = getResources().getString(R.string.meatShootingMessage, numPoundsMeat);

Ejemplo tomado de aquí

  • FYI, Resources.getString(int resId, Object… formatArgs) es otro método similar a String.format(), que toma la identificación del recurso y los argumentos del objeto. Te permite saltarte ese último paso.

    – José

    2 de mayo de 2011 a las 17:03


  • La documentación de las banderas: desarrollador.android.com/reference/java/util/Formatter.html

    –Brais Gabin

    9 de septiembre de 2013 a las 8:27

avatar de usuario
Roel

Simplemente páselo a través de la función getString() como objeto formatArgs.

int nextResultsSize = getNextResultsSize();
String strNextResultsSize = 
     getResources().getString(R.string.next_x_results, nextResultsSize);

XML:

<string name="next_x_results">Next %1$d results</string>

avatar de usuario
Atul Bhardwaj

<string name="message">You shot %1$d pounds of meat! Put Second Variable String here %2$s and third variable integer here %3$d</string>
int intVariable1 = 123;
String stringVariable2 = "your String";
int intVariable3 = 456;
String strMeatFormat = getResources().getString(R.string.message, intVariable1, stringVariable2 , intVaribale3);

  • ¿Cómo asignó un valor de cadena a int en stringVariable2?

    – salmanseifian

    17 de abril de 2018 a las 10:02

  • @salman Al usar %2$s, asigné un valor de cadena a la cadena en el segundo lugar, no int

    – Atul Bhardwaj

    27 de marzo de 2019 a las 11:56


si, puedes usar. después de agregar la etiqueta al archivo string.xml y luego recuperar lo mismo en su archivo .java, puede seguir esto.

AndriodApp

String str = getResources().getString(R.string.name);

¿Ha sido útil esta solución?