Процент символа в strings.xml

Im пытается форматировать строку из string.xml, чтобы повторно использовать ее с несколькими значениями. Я сталкиваюсь с некоторыми проблемами, поскольку строка также должна содержать символ процента, который используется форматированием. Я уже пытался заменить символ% его представлением в формате unicode, но это, похоже, не работает:

<?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> 

Код Java:

 String value = "25"; String formattedString = context.getResources().getString(R.string.teststring), value); 

В этом примере. Teststring и teststring2 выдают ошибку, а teststring3 отлично работает. Каков правильный способ поместить этот символ% в xml-строку, чтобы получить «Новое значение 25%» в качестве форматированной строки?

Спасибо за вашу помощь.

Трассировки стека:

 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– Спасибо за помощь. Правильный ответ

 <string name="teststring">The new value if %1$s%%</string> 

Formatted = "false" не должно быть установлено.

Solutions Collecting From Web of "Процент символа в strings.xml"

использование

 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="teststring">The new value is %1$s%%</string> </resources> 

В java

  String value = "25"; String formattedString =String.format(getResources().getString(R.string.teststring), value); Log.i("",formattedString); 

Можете ли вы попробовать \%% вместо%?

Подобно,

 <string name="teststring">The new value is \%%</string> 

Или

 <string formatted="false" name="teststring" >The new value is %</string> 

Попробуй это

 <string name="teststring"> The new value is %1$s %% </string> 
 String value = "25"; String formattedString = "The new value is " + value + (char) 0x0025; 

Если теперь Log.d (TAG, formattedString); Он будет регистрировать

 The new value is 25% 

Используйте следующее:

 String str = context.getResources().getString(R.string.teststring); String formattedString = String.format(str, value); 

Проверьте это,

 <string name="teststring">The new value is %1$s %%</string> String value = "25"; String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);