閉じる

java.lang.IllegalArgumentException: no char field ‘exponential’

Android 2.3の端末で発生。
4.xの端末では発生しない。
事例を調べてみると、2.2までと 3.0からは動くけど、2.3でだけ動かないらしい。
Unable to run Android app after creating new AVD , Issue 14495: Android 2.3 and 3.0’s DecimalFormatSymbols serialization is broken. (Working on 2.2 and before)
調べていくと、少なくとも今回のケースでは NumberFormatのインスタンスを持つオブジェクトをシリアライズしたときに発生するらしい。
元々、NumberFormatのインスタンスって getInstanceという staticメソッドを使って取得するのでそれをシリアライズしようとすると問題になるって事かね。
インスタンスを直接持つのではなく、オンデマンドで得るようにしたら解消した。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)