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); 
  • No se pudo inicializar LoginButton Facebook-sdk para android
  • GUIs basadas en XML y rendimiento
  • La vista de desplazamiento de Android es demasiado larga
  • Permisos de usuario de Android para acceder a Internet
  • Símbolo exclamatorio desconocido en el archivo xml
  • ¿El botón del interruptor-botón se inclina?
  • Cómo eliminar los espacios en blanco entre etiquetas en XML
  • Agregar imagen al elemento de menú
  • ViewPagers en un ListView mostrando elementos de la lista en blanco
  • Recorte de visualización de Android
  • Android XML redondeado esquinas recortadas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.