Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 格式标志转换不匹配异常_Java_Android - Fatal编程技术网

Java 格式标志转换不匹配异常

Java 格式标志转换不匹配异常,java,android,Java,Android,嗨,希望这符合作为一个好的书面问题的标准。 我是编程新手,我一直在尝试为android上的攀岩者编写一个应用程序,根据他们当前的训练能力告诉用户应该攀岩什么。该应用程序要求用户输入他们的攀爬能力和墙的长度 我已经使用SharedReferences为此设置了一个带有数字编辑文本字段和列表的首选项菜单。 最初我有一个类强制转换异常,因为我试图将编辑文本中的字符串用作float/double/int(我尝试了所有三个!) 我使用double=double.valueof(StringFromPref

嗨,希望这符合作为一个好的书面问题的标准。 我是编程新手,我一直在尝试为android上的攀岩者编写一个应用程序,根据他们当前的训练能力告诉用户应该攀岩什么。该应用程序要求用户输入他们的攀爬能力和墙的长度

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

我使用
double=double.valueof(StringFromPreference)
它解决了该错误,但现在产生了错误
java.util.FormatFlagsConversionMismatchException:%o不支持“”
,我无法找到解决方案

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

解决方案:


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

尝试修剪输入字符串:

Double d = Double.valueof(StringFromPrefernce.trim());
这将删除字符串开头和结尾不必要的空格。 此外,最好在通话中使用try/catch来避免无效输入:

Double d = 0;
try
{
    d = Double.valueof(StringFromPrefernce.trim());
}
catch(NumberFormatException e)
{
    e.printStackTrace(); 
}
解决方案:


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

似乎是Android 4的一个变化。将字符串中的%符号加倍似乎有效-%现在似乎是一个转义字符,因此使用%%进行自我转义为我做到了这一点

我之所以会这样,是因为我使用了一种工具来进行自动翻译。它将
%s
替换为
%s

根据RominaLiuzzi的评论。
您不需要删除%。您可以使用%%

对其进行转义。您需要在字符串中添加
formatted=“false”
属性


请参见

显然,当您尝试提交首选项时,出现了一些问题。您能在编辑框中读取用户输入的值并试图将其保存到SharedPrefsHi Pavel的地方发布代码吗?谢谢您的帮助。我试过你的建议,但我还是有点力不从心。我已经发布了更多您要求的代码,希望您能告诉我为什么强制关闭。您更新的代码不包含提交更改到SharedPref的实际过程。您确定从`d=Double.valueof(StringFromPreference.trim());`呼叫我想这是在别的地方发生的。你能把剩下的代码贴出来吗?嗨,帕维尔,我已经贴出了我正在使用的代码。虽然大多数其他代码不涉及共享首选项。但找到了解决方案,即从我用于生成android:summary文本的字符串中删除%符号。真正奇怪的是,它并没有导致在新安装时强制关闭,但一旦从列表中选择了一个值,每次用户试图打开首选项菜单时,应用程序都会强制关闭。我想这是android sdk中的一个bug?谢谢你的时间,Pavel。你不需要删除%你可以用%%转义它。