Símbolo de porcentaje en strings.xml
Estoy tratando de dar formato a una cadena de string.xml para reutilizarla con varios valores. Estoy corriendo en algunos problemas como el String también debe contener el símbolo de porcentaje que es utilizado por el formateador. Ya he intentado reemplazar el símbolo% por su presentación unicode pero que no parece funcionar:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="teststring">The new value is %1$s%</string> <string name="teststring2">The new value is %1$s\u0025</string> <string name="teststring3">The new value is %1$s</string> </resources>
Código Java:
- ¿Por qué tengo espacio en blanco en la parte superior y en la parte inferior de mi ImageView en mi RelativeLayout?
- ¿Cómo puedo obtener nodos específicos de XML usando XPath en Java?
- Android: conflicto de ID cuando se crean 3 pestañas o más
- El enfoque de EditText es inconsistente en todos los diseños
- Android convertir vista XML a mapa de bits sin mostrarlo
String value = "25"; String formattedString = context.getResources().getString(R.string.teststring), value);
En este ejemplo. Teststring y teststring2 producirán un error, mientras que teststring3 funcionará bien. ¿Cuál es la manera correcta de poner ese símbolo% en la cadena xml para obtener "El nuevo valor es 25%" como formato String?
Gracias por tu ayuda.
Stacktrace:
FATAL EXCEPTION: main java.util.UnknownFormatConversionException: Conversion: at java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.java:2304) at java.util.Formatter$FormatSpecifierParser.advance(Formatter.java:2298) at java.util.Formatter$FormatSpecifierParser.parseConversionType(Formatter.java:2377) at java.util.Formatter$FormatSpecifierParser.parseArgumentIndexAndFlags(Formatter.java:2348) at java.util.Formatter$FormatSpecifierParser.parseFormatToken(Formatter.java:2281) at java.util.Formatter.doFormat(Formatter.java:1069) at java.util.Formatter.format(Formatter.java:1040) at java.util.Formatter.format(Formatter.java:1009) at java.lang.String.format(String.java:1988) at android.content.res.Resources.getString(Resources.java:343) at (... and so on)
– EDIT– Gracias por la ayuda. La respuesta correcta es
<string name="teststring">The new value if %1$s%%</string>
Formatted = "false" no se debe establecer.
- Cómo definir el diseño en un PopupWindow de un archivo xml, cuando el método PopupWindow se llama desde una clase independiente
- Ejemplo simple de uso de <merge> y <include> en diseños XML de Android
- El servidor no pudo procesar su solicitud. El valor no puede ser nulo: análisis de jabón
- Cómo obtener el índice seleccionado de un grupo de radio en Android
- Error de Android RecyclerView
- Tamaño máximo al analizar XML con DOM
- Exhibición de la secuencia de la Cadena de Android Signo de porcentaje
- Android Cómo agregar icono en cada elemento de la lista listvIew y cambiar el color del texto, Color de fondo
Utilizar
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="teststring">The new value is %1$s%%</string> </resources>
En java
String value = "25"; String formattedString =String.format(getResources().getString(R.string.teststring), value); Log.i("",formattedString);
¿Puedes intentar \%%
lugar de% ??
Me gusta,
<string name="teststring">The new value is \%%</string>
O
<string formatted="false" name="teststring" >The new value is %</string>
Prueba esto
<string name="teststring"> The new value is %1$s %% </string>
String value = "25"; String formattedString = "The new value is " + value + (char) 0x0025;
Si ahora Log.d (TAG, formattedString); Se registrará
The new value is 25%
Utilizar de esta manera:
String str = context.getResources().getString(R.string.teststring); String formattedString = String.format(str, value);
Revisa este,
<string name="teststring">The new value is %1$s %%</string> String value = "25"; String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);
- Elementos compartidos que animan entre fragmentos
- Modificación de la imagen de recurso de la barra de progreso