格式标志转换不匹配异常

Gar*_*wen 5 java android

希望这符合成为一个写得很好的问题的标准.我是编程的新手,我一直在尝试为Android上的登山者编写一个应用程序,根据他们当前培训期间的能力告诉用户他们应该攀爬什么.该应用程序要求用户输入他们的攀爬能力和墙壁长度.

我使用SharedPrefences数字编辑文本字段和列表为此设置了首选项菜单.最初我有一个类强制转换异常,因为我试图使用编辑文本中的字符串作为float/double/int(我尝试了所有三个!).

我已经将字符串转换为double,使用Double = Double.valueof(StringFromPrefernce) 它解决了这个错误,但现在产生了java.util.FormatFlagsConversionMismatchException: %o does not support ' '我无法找到解决方案的错误.

该应用程序允许用户最初访问首选项菜单,但是一旦他们设置了一些值,任何访问首选项菜单的尝试都将产生此强制关闭.

解:

在我的preferences.xml中,我引用了一个字符串.该字符串包含%符号,该符号负责关闭力.删除%符号修复了问题.

小智 16

似乎是Android 4的变化.在字符串中加倍%符号似乎有效 - %现在似乎是一个转义字符,所以%%的自我转义为我做了.


Gar*_*wen 8

解决方案:

在我的preferences.xml 中,我引用了一个字符串。该字符串包含一个 % 符号,负责强制关闭。删除 % 符号解决了这个问题。

  • 你不需要删除 % 你可以用 %% 转义它。 (6认同)

j2e*_*nue 6

我之所以这样做,是因为我正在使用一种工具进行自动翻译。它正在放入% s而不是%s.