Android 使用SimpleDataFormat格式化日期时出现NullPointerException
这是获取空指针异常的代码:Android 使用SimpleDataFormat格式化日期时出现NullPointerException,android,nullpointerexception,simpledateformat,Android,Nullpointerexception,Simpledateformat,这是获取空指针异常的代码: SimpleDateFormat df = new SimpleDateFormat("MMMM dd, yyyy"); String temp = df.format(load.getDeliveryDate()); System.out.println(temp); date.setText(temp); 这是我创建随机日期(用于测试数据)的代码: 我最初在为日期项设置文本的行上遇到错误。现在,我的日期格式声明行也出现了一个错误 我已经在检查加载,以确保它不是空
SimpleDateFormat df = new SimpleDateFormat("MMMM dd, yyyy");
String temp = df.format(load.getDeliveryDate());
System.out.println(temp);
date.setText(temp);
这是我创建随机日期(用于测试数据)的代码:
我最初在为日期项设置文本的行上遇到错误。现在,我的日期格式声明行也出现了一个错误
我已经在检查加载,以确保它不是空的。它是一个包含日期属性的自定义类
Logcat输出(重建后):
不推荐使用新日期(整年、整月、整日)。你可以改用公历
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("MMMM dd, yyyy");
String temp = df.format(randomDate());
System.out.println(temp);
}
private static Date randomDate(){
int month, year, day;
Random call = new Random();
month = call.nextInt(11); // month -> 0 to 11 for gregorian calendar
year = call.nextInt(2012);
day = call.nextInt(31);
GregorianCalendar cal = new GregorianCalendar();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.MONTH, month);
Date toReturn = cal.getTime();
System.out.println(toReturn.toString());
return toReturn;
}
如果获得NullPointerException,则该字段必须为null。只用
if(date != null)
date.setText(temp);
不推荐使用新日期(整年、整月、整日)。你可以改用公历
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("MMMM dd, yyyy");
String temp = df.format(randomDate());
System.out.println(temp);
}
private static Date randomDate(){
int month, year, day;
Random call = new Random();
month = call.nextInt(11); // month -> 0 to 11 for gregorian calendar
year = call.nextInt(2012);
day = call.nextInt(31);
GregorianCalendar cal = new GregorianCalendar();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.MONTH, month);
Date toReturn = cal.getTime();
System.out.println(toReturn.toString());
return toReturn;
}
如果获得NullPointerException,则该字段必须为null。只用
if(date != null)
date.setText(temp);
根据您发布的堆栈跟踪,日期格式不为空,但日期(可能)为空 堆栈跟踪的这一行告诉我们这是格式化日期的问题。但它也告诉我们format对象存在于此。我们知道该对象是用字符串(而不是空指针)初始化的,这样的库中的内部错误非常罕见 因此,
load.getDeliveryDate()
调用返回的null
日期可能有问题。你还没有发布这篇文章,所以我不能发表评论
您在问题中描述:
我最初在设置文本的行上遇到一个错误
我的约会项目。现在我的日期格式也出现了错误
申报行
由于这显然不能为null,因此设备上运行的代码与IDE(Eclipse?)中运行的代码之间似乎不匹配
这种情况时有发生。由于某些原因,应用程序不会使用某些或所有类的新版本进行更新。当你得到任何证据证明这已经发生了(你看起来是这样的),最好的办法是完全卸载应用程序,并进行完整的项目清理。之后,当您尝试运行应用程序时,它会将完整的干净副本推送到设备上,这将使调试更加容易。根据您发布的堆栈跟踪,日期格式不是空的,但日期(可能)是空的 堆栈跟踪的这一行告诉我们这是格式化日期的问题。但它也告诉我们format对象存在于此。我们知道该对象是用字符串(而不是空指针)初始化的,这样的库中的内部错误非常罕见 因此,
load.getDeliveryDate()
调用返回的null
日期可能有问题。你还没有发布这篇文章,所以我不能发表评论
您在问题中描述:
我最初在设置文本的行上遇到一个错误
我的约会项目。现在我的日期格式也出现了错误
申报行
由于这显然不能为null,因此设备上运行的代码与IDE(Eclipse?)中运行的代码之间似乎不匹配
这种情况时有发生。由于某些原因,应用程序不会使用某些或所有类的新版本进行更新。当你得到任何证据证明这已经发生了(你看起来是这样的),最好的办法是完全卸载应用程序,并进行完整的项目清理。之后,当您尝试运行应用程序时,它会将一个完整的干净副本推送到设备上,这将使调试更加容易。从
load.getDeliveryDate()加载的值是多少?它是空的吗?如果是这样,为什么要从空类调用函数?从load.getDeliveryDate()
调用load
的值是多少?它是空的吗?如果是这样,为什么要从null类调用函数?出于某种原因,load.getDeliveryDate()返回null。我做了一个检查,正在调用正在工作的randomDate()。出于某种原因,load.getDeliveryDate()返回null。我开了一张支票,正在回忆起正在工作的randomDate()。
04-30 12:56:10.423: E/AndroidRuntime(8212): at java.text.DateFormat.format(DateFormat.java:376)