我无法理解此代码中NumberFormatException的原因:
SimpleDateFormat format = (SimpleDateFormat) SimpleDateFormat.getDateInstance();
以下是我的LogCat输出:
10-30 18:04:05.600: W/System.err(23899): java.lang.NumberFormatException: Invalid int: ""
10-30 18:04:05.600: W/System.err(23899): at java.lang.Integer.invalidInt(Integer.java:138)
10-30 18:04:05.600: W/System.err(23899): at java.lang.Integer.parseInt(Integer.java:359)
10-30 18:04:05.600: W/System.err(23899): at java.lang.Integer.parseInt(Integer.java:332)
10-30 18:04:05.600: W/System.err(23899): at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)
10-30 18:04:05.600: W/System.err(23899): at java.util.Calendar.<init>(Calendar.java:745)
10-30 18:04:05.600: W/System.err(23899): at java.util.GregorianCalendar.<init>(GregorianCalendar.java:338)
10-30 18:04:05.600: W/System.err(23899): at java.util.GregorianCalendar.<init>(GregorianCalendar.java:314)
10-30 18:04:05.608: W/System.err(23899): at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:378)
10-30 18:04:05.608: W/System.err(23899): at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)
10-30 18:04:05.608: W/System.err(23899): at java.text.DateFormat.getDateInstance(DateFormat.java:462)
10-30 18:04:05.608: W/System.err(23899): at java.text.DateFormat.getDateInstance(DateFormat.java:443)
10-30 18:04:05.608: W/System.err(23899): at java.text.DateFormat.getDateInstance(DateFormat.java:426)
10-30 18:04:05.608: W/System.err(23899): at com.mycompany.mypackage.InboxFragment$15.setViewValue(InboxFragment.java:396)
修改
DateFormat format = DateFormat.getDateInstance();
答案 0 :(得分:0)
将其更改为
SimpleDateFormat format = SimpleDateFormat.getDateInstance();
答案 1 :(得分:0)
看起来您正在尝试将空字符串“”解析为int。
答案 2 :(得分:0)
你试试这个:
SimpleDateFormat.getDateInstance()
实际返回DateFormat,并尝试在SimpleDateFormat中强制转换它, 试图将一些字符串转换为数字格式, 导致NumberFormatException。
这是类层次结构: java.lang.Object继承 ↳java.text.Format ↳java.text.DateFormat ↳java.text.SimpleDateFormat
快乐编码......
答案 3 :(得分:0)
.getDateInstance继承自DateFormat,因此返回DateFormat。 DateFormat是SimpleDateFormat的超类。您不能将超类类型转换为其子类之一。这是你在这里尝试做的,这就是你得到这个错误的原因。当您将程序员转换为SimpleDateFormat时,编译器会信任该程序员,这就是您在编译期间没有收到任何错误的原因。
简而言之,您不能将子类分配给其超类的实例。有很多方法可以解决这个问题,但在这种情况下,你只是打破了继承。不要总是信任eclipse提供的quickfix;)