Android:西班牙语:解析浮点值时出现问题:应用程序崩溃

Android:西班牙语:解析浮点值时出现问题:应用程序崩溃,第1张

概述Android:西班牙语:解析浮点值时出现问题:应用程序崩溃脚步:1.将语言设为app中的西班牙语2.将一些浮点值格式化为单个小数3.将格式化的值再次浮动应用程序崩溃.示例代码如下:如果您对此有任何疑问,请帮忙.TextViewtextView=null;protectedvoidonCreate(BundlesavedInst

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.access0(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”语言环境格式化字符串,所以这样做的方法是使用@L_403_1@类,as per this answer:

NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("es"));Number parsednumber = nf.parse(parsedString);float parsedValuefloat = parsednumber.floatValue();
总结

以上是内存溢出为你收集整理的Android:西班牙语:解析浮点值时出现问题:应用程序崩溃全部内容,希望文章能够帮你解决Android:西班牙语:解析浮点值时出现问题:应用程序崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存