华为设备上的NumberformatExceptions

时间:2014-05-14 09:42:01

标签: java android gson numberformatexception

由于我已经在Huawei device上测试了我的应用程序,因此我在LogCat中看到了所有类型的NumberFormatExceptions,并且事情不再按预期工作了。他们出现在我的代码的完整不同部分。

这一行:

    Gson gson = new GsonBuilder().setDateFormat("dd.MM.yyyy HH:mm:ss").create();

将产生:

05-14 09:32:21.359: W/System.err(2384): java.lang.NumberFormatException: Invalid int: ""
05-14 09:32:21.369: W/System.err(2384):     at java.lang.Integer.invalidInt(Integer.java:138)
05-14 09:32:21.369: W/System.err(2384):     at java.lang.Integer.parseInt(Integer.java:359)
05-14 09:32:21.369: W/System.err(2384):     at java.lang.Integer.parseInt(Integer.java:332)
05-14 09:32:21.369: W/System.err(2384):     at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)
05-14 09:32:21.369: W/System.err(2384):     at java.util.Calendar.<init>(Calendar.java:745)
05-14 09:32:21.369: W/System.err(2384):     at java.util.GregorianCalendar.<init>(GregorianCalendar.java:338)
05-14 09:32:21.369: W/System.err(2384):     at java.util.GregorianCalendar.<init>(GregorianCalendar.java:314)
05-14 09:32:21.369: W/System.err(2384):     at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:378)
05-14 09:32:21.369: W/System.err(2384):     at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)
05-14 09:32:21.369: W/System.err(2384):     at com.google.gson.DefaultDateTypeAdapter.<init>(DefaultDateTypeAdapter.java:49)
05-14 09:32:21.369: W/System.err(2384):     at com.google.gson.GsonBuilder.addTypeAdaptersForDate(GsonBuilder.java:555)
05-14 09:32:21.369: W/System.err(2384):     at com.google.gson.GsonBuilder.create(GsonBuilder.java:543)
05-14 09:32:21.369: W/System.err(2384):     at xy.SearchFragment.onCreate(SearchFragment.java:108)
05-14 09:32:21.369: W/System.err(2384):     at android.support.v4.app.Fragment.performCreate(Fragment.java:1477)
05-14 09:32:21.369: W/System.err(2384):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:893)
05-14 09:32:21.369: W/System.err(2384):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
05-14 09:32:21.369: W/System.err(2384):     at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1184)
05-14 09:32:21.369: W/System.err(2384):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:291)
05-14 09:32:21.369: W/System.err(2384):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
05-14 09:32:21.379: W/System.err(2384):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
05-14 09:32:21.379: W/System.err(2384):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
05-14 09:32:21.379: W/System.err(2384):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
05-14 09:32:21.379: W/System.err(2384):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
05-14 09:32:21.379: W/System.err(2384):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
05-14 09:32:21.379: W/System.err(2384):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
05-14 09:32:21.379: W/System.err(2384):     at android.app.Activity.setContentView(Activity.java:1835)
05-14 09:32:21.379: W/System.err(2384):     at xy.ui.SearchActivity.onCreate(SearchActivity.java:113)
05-14 09:32:21.379: W/System.err(2384):     at android.app.Activity.performCreate(Activity.java:4465)
05-14 09:32:21.379: W/System.err(2384):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-14 09:32:21.379: W/System.err(2384):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-14 09:32:21.379: W/System.err(2384):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-14 09:32:21.379: W/System.err(2384):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-14 09:32:21.379: W/System.err(2384):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-14 09:32:21.379: W/System.err(2384):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-14 09:32:21.379: W/System.err(2384):     at android.os.Looper.loop(Looper.java:137)
05-14 09:32:21.379: W/System.err(2384):     at android.app.ActivityThread.main(ActivityThread.java:4424)
05-14 09:32:21.379: W/System.err(2384):     at java.lang.reflect.Method.invokeNative(Native Method)
05-14 09:32:21.379: W/System.err(2384):     at java.lang.reflect.Method.invoke(Method.java:511)
05-14 09:32:21.379: W/System.err(2384):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
05-14 09:32:21.379: W/System.err(2384):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
05-14 09:32:21.379: W/System.err(2384):     at dalvik.system.NativeStart.main(Native Method)

在OrmLite数据库上进行查询时会发生类似的事情,即使它是空的:

ArrayList<Search> searches = getSearchesDao().queryForAll(); 




   05-14 09:40:07.359: W/System.err(2574): java.lang.NumberFormatException: Invalid int: ""
    05-14 09:40:07.359: W/System.err(2574):     at java.lang.Integer.invalidInt(Integer.java:138)
    05-14 09:40:07.359: W/System.err(2574):     at java.lang.Integer.parseInt(Integer.java:359)
    05-14 09:40:07.359: W/System.err(2574):     at java.lang.Integer.parseInt(Integer.java:332)
    05-14 09:40:07.359: W/System.err(2574):     at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)
    05-14 09:40:07.359: W/System.err(2574):     at java.util.Calendar.<init>(Calendar.java:745)
    05-14 09:40:07.359: W/System.err(2574):     at java.util.GregorianCalendar.<init>(GregorianCalendar.java:338)
    05-14 09:40:07.369: W/System.err(2574):     at java.util.GregorianCalendar.<init>(GregorianCalendar.java:314)
    05-14 09:40:07.369: W/System.err(2574):     at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:378)
    05-14 09:40:07.369: W/System.err(2574):     at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)
    05-14 09:40:07.369: W/System.err(2574):     at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:253)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.types.BaseDateType$DateStringFormatConfig$1.initialValue(BaseDateType.java:55)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.types.BaseDateType$DateStringFormatConfig$1.initialValue(BaseDateType.java:52)
    05-14 09:40:07.369: W/System.err(2574):     at java.lang.ThreadLocal$Values.getAfterMiss(ThreadLocal.java:430)
    05-14 09:40:07.369: W/System.err(2574):     at java.lang.ThreadLocal.get(ThreadLocal.java:65)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.types.BaseDateType$DateStringFormatConfig.getDateFormat(BaseDateType.java:63)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.types.BaseDateType.parseDateString(BaseDateType.java:40)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.types.DateStringType.sqlArgToJava(DateStringType.java:61)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.BaseFieldConverter.resultToJava(BaseFieldConverter.java:28)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.field.FieldType.resultToJava(FieldType.java:819)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:60)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.stmt.SelectIterator.getCurrent(SelectIterator.java:270)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.stmt.SelectIterator.nextThrow(SelectIterator.java:161)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:202)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.stmt.StatementExecutor.queryForAll(StatementExecutor.java:118)
    05-14 09:40:07.369: W/System.err(2574):     at com.j256.ormlite.dao.BaseDaoImpl.queryForAll(BaseDaoImpl.java:241)
    05-14 09:40:07.369: W/System.err(2574):     at xy.DatabaseHelper.getSearches(DatabaseHelper.java:443)
    05-14 09:40:07.369: W/System.err(2574):     at 
xy.GlobalApp.onCreate(GlobalApp.java:53)
    05-14 09:40:07.369: W/System.err(2574):     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
    05-14 09:40:07.369: W/System.err(2574):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3954)
    05-14 09:40:07.369: W/System.err(2574):     at android.app.ActivityThread.access$1300(ActivityThread.java:123)
    05-14 09:40:07.369: W/System.err(2574):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185)
    05-14 09:40:07.369: W/System.err(2574):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-14 09:40:07.369: W/System.err(2574):     at android.os.Looper.loop(Looper.java:137)
    05-14 09:40:07.369: W/System.err(2574):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    05-14 09:40:07.369: W/System.err(2574):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-14 09:40:07.369: W/System.err(2574):     at java.lang.reflect.Method.invoke(Method.java:511)
    05-14 09:40:07.379: W/System.err(2574):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
    05-14 09:40:07.379: W/System.err(2574):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
    05-14 09:40:07.379: W/System.err(2574):     at dalvik.system.NativeStart.main(Native Method)
    05-14 09:40:07.459: W/dalvikvm(2574): VFY: unable to resolve interface method 33786: Lcom/google/inject/Injector;.getAllBindings ()Ljava/util/Map;
    05-14 09:40:07.469: W/dalvikvm(2574): VFY: unable to resolve interface method 33790: Lcom/google/inject/Injector;.getExistingBinding (Lcom/google/inject/Key;)Lcom/google/inject/Binding;
    05-14 09:40:07.469: W/dalvikvm(2574): VFY: unable to resolve interface method 33798: Lcom/google/inject/Injector;.getScopeBindings ()Ljava/util/Map;
    05-14 09:40:07.469: W/dalvikvm(2574): VFY: unable to resolve interface method 33799: Lcom/google/inject/Injector;.getTypeConverterBindings ()Ljava/util/Set;

这可能是什么问题?

编辑:事实上,事情仍在按预期工作,我还有其他一些问题。此外,例外仅是警告。 不过,知道为什么Gson对象的初始化会在某些设备上产生此警告会很有趣。

1 个答案:

答案 0 :(得分:0)

看来,这是华为的软件问题this 是另一个问题。

您可以使用try/catch进行环绕并捕获numberFormatException然后打印相应的消息