【问题标题】:java.lang.NumberFormatException: Invalid int: ""java.lang.NumberFormatException:无效的 int:“”
【发布时间】:2013-12-13 19:08:20
【问题描述】:

我在调试代码时遇到问题。我在第 88 行收到 java.lang.NumberFormatException: Invalid int: "" 错误,即 Calendar c = Calendar.getInstance();。我不明白Calendar 实例如何产生这样的错误。

WakefulReceiverWorker.java:

    Calendar c = Calendar.getInstance();   // <----- line 88
    long newStart = c.getTimeInMillis() + 300000;
    AlarmManager mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, randomInt, intent2,PendingIntent.FLAG_UPDATE_CURRENT);
    mAlarmManager.set(AlarmManager.RTC_WAKEUP, (newStart), pendingIntent);

日志猫:

12-13 19:57:01.589    2070-2085/com.example.app W/System.err﹕ java.lang.NumberFormatException: Invalid int: ""
12-13 19:57:01.619    2070-2085/com.example.app W/System.err﹕ at java.lang.Integer.invalidInt(Integer.java:138)
12-13 19:57:01.629    2070-2085/com.example.app W/System.err﹕ at java.lang.Integer.parseInt(Integer.java:359)
12-13 19:57:01.639    2070-2085/com.example.app W/System.err﹕ at java.lang.Integer.parseInt(Integer.java:332)
12-13 19:57:01.639    2070-2085/com.example.app W/System.err﹕ at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)
12-13 19:57:01.639    2070-2085/com.example.app W/System.err﹕ at java.util.Calendar.<init>(Calendar.java:745)
12-13 19:57:01.639    2070-2085/com.example.app W/System.err﹕ at java.util.GregorianCalendar.<init>(GregorianCalendar.java:338)
12-13 19:57:01.649    2070-2085/com.example.app W/System.err﹕ at java.util.GregorianCalendar.<init>(GregorianCalendar.java:239)
12-13 19:57:01.649    2070-2085/com.example.app W/System.err﹕ at java.util.Calendar.getInstance(Calendar.java:1086)
12-13 19:57:01.649    2070-2085/com.example.app W/System.err﹕ at com.example.app.WakefulReceiverWorker.onHandleIntent(WakefulReceiverWorker.java:88)
12-13 19:57:01.659    2070-2085/com.example.app W/System.err﹕ at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
12-13 19:57:01.659    2070-2085/com.example.app W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
12-13 19:57:01.659    2070-2085/com.example.app W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
12-13 19:57:01.659    2070-2085/com.example.app W/System.err﹕ at android.os.HandlerThread.run(HandlerThread.java:60)

【问题讨论】:

  • 这不是另一个变量....这是日历中的无效日期。
  • @Elliott Frisch 不,变量 c 在这个类中是唯一的。
  • " Calendar c = Calendar.getInstance(); " 你确定这是第 88 行吗?
  • stackoverflow.com/questions/16936086/… 另一个类似的问题。
  • Calendar.getHwFirstDayOfWeek 不是标准的 java.util.Calendar 方法。这可能是华为实施错误。移动设备供应商有时会覆盖 Android 框架代码以使用其特定硬件。似乎每次搜索 getHwFirstDayOfWeek 都是 Android 华为设备...

标签: java android


【解决方案1】:

我刚刚在三星 Galaxy S3 (i9300) 上测试了该应用程序,此设备上不存在该错误。好像是华为的软件问题。

【讨论】:

    【解决方案2】:

    试试这个:

      Calendar calendar = new GregorianCalendar();
    

    不知道为什么你的不工作,但Calendar 是一个抽象类,所以如果你尝试GregorianCalendar 可能会更好。

    【讨论】:

    • Calendar.getInstance() 不是不安全
    • 不会改变任何东西。
    • new GregorianCalendar() 假定您的用户使用公历,但并非每个国家/地区都使用它。
    【解决方案3】:

    尝试以这种方式实例化您的日历:

    Locale locale = Locale.getDefault();
    System.out.println("Locale is : [" + locale + "]"); // make sure there is a default Locale
    Calendar calendar = Calendar.getInstance(locale);
    

    ----- 更新 ------
    如果您查看堆栈跟踪,看起来这是罪魁祸首:

    12-13 19:57:01.639    2070-2085/com.example.app W/System.err﹕ at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)
    

    因为堆栈跟踪中的下一行开始解析整数,大概是 getHwFirstDayOfWeek() 返回的值。

    【讨论】:

    • 你改变了变量名,否则代码和OP的一样。这有什么帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多