Android:西班牙语:解析浮点值时出现问题:应用程序崩溃
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android:西班牙语:解析浮点值时出现问题:应用程序崩溃,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3971字,纯文字阅读大概需要6分钟。
内容图文
![Android:西班牙语:解析浮点值时出现问题:应用程序崩溃](/upload/InfoBanner/zyjiaocheng/733/f4a14e418eb54b7abae27362441c43f7.jpg)
Android:西班牙语:解析浮点值时出现问题:应用程序崩溃
脚步:
1.将语言设为app中的西班牙语
2.将一些浮点值格式化为单个小数
3.将格式化的值再次浮动
应用程序崩溃.
示例代码如下:
如果您对此有任何疑问,请帮忙.
TextView textView = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textview);
float value = 3.456789f;
setLocale("es", this);//Set App language as Spanish
String parsedString = String.format("%.1f", value); // format the float value to single precision
float parsedValueFloat = Float.parseFloat(parsedString); // parse the value again to float.(APP Crashesh here)
textView.setText(parsedValueFloat+"");
}
public static void setLocale(String languageCode, Context ctx) {
Locale locale = new Locale(languageCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
ctx.getResources().updateConfiguration(config,
ctx.getResources().getDisplayMetrics());
}
崩溃日志如下:
01-06 20:41:00.265: E/AndroidRuntime(3153): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testcanvas/com.example.testcanvas.MainActivity}: java.lang.NumberFormatException: Invalid float: "3,5"
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.ActivityThread.access$700(ActivityThread.java:159)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.os.Looper.loop(Looper.java:137)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.ActivityThread.main(ActivityThread.java:5419)
01-06 20:41:00.265: E/AndroidRuntime(3153): at java.lang.reflect.Method.invokeNative(Native Method)
01-06 20:41:00.265: E/AndroidRuntime(3153): at java.lang.reflect.Method.invoke(Method.java:525)
01-06 20:41:00.265: E/AndroidRuntime(3153): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
01-06 20:41:00.265: E/AndroidRuntime(3153): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
01-06 20:41:00.265: E/AndroidRuntime(3153): at dalvik.system.NativeStart.main(Native Method)
01-06 20:41:00.265: E/AndroidRuntime(3153): Caused by: java.lang.NumberFormatException: Invalid float: "3,5"
01-06 20:41:00.265: E/AndroidRuntime(3153): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
01-06 20:41:00.265: E/AndroidRuntime(3153): at java.lang.StringToReal.parseFloat(StringToReal.java:310)
01-06 20:41:00.265: E/AndroidRuntime(3153): at java.lang.Float.parseFloat(Float.java:300)
01-06 20:41:00.265: E/AndroidRuntime(3153): at com.example.testcanvas.MainActivity.onCreate(MainActivity.java:31)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.Activity.performCreate(Activity.java:5372)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
01-06 20:41:00.265: E/AndroidRuntime(3153): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
01-06 20:41:00.265: E/AndroidRuntime(3153): ... 11 more
解决方法:
发生这种情况是因为浮动/双打到字符串的本地化输出,在这种情况下(以及许多其他语言 – 您已经注意到西班牙语,意大利语,俄语,还有法语和其他语言),使用逗号而不是句点:
3,5
代替
3.5
由于Float.parse()需要一个“en”语言环境格式化字符串,所以这样做的方法是使用NumberFormat类,as per this answer:
NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("es"));
Number parsedNumber = nf.parse(parsedString);
float parsedValueFloat = parsedNumber.floatValue();
内容总结
以上是互联网集市为您收集整理的Android:西班牙语:解析浮点值时出现问题:应用程序崩溃全部内容,希望文章能够帮你解决Android:西班牙语:解析浮点值时出现问题:应用程序崩溃所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。