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:

 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.

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); 
  • Cómo vincular un layout_width y layout_height mediante el enlace de datos en Android
  • NullPointerException intentando acceder a un recurso de cadena
  • Cambiar entre previsualización de referencia y valor de recursos de cadena en el editor xml
  • Quitar la sombra de ActionBar en Android L (API 21)
  • Elemento 'item' no soportado en el archivo style.xml
  • Analizar xml de la respuesta httppost
  • Dibujar círculo mediante programación utilizando Android ShapeDrawable
  • Defina un atributo necesario para <declare-stylable>
  • TextView no se muestra en la parte superior del mapa de Google
  • Ripple dibujable en xml no funciona
  • Error de vinculación de datos de Android al utilizar etiqueta de inclusión con diseño de vista personalizada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.