原因:java.lang.NullPointerException:尝试在 Android 中的空对象引用上调用虚方法 'long java.util.Date.getTime()'
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference in Android
我想把 strSqliteDate: = 2016-01-14 05:34:50 PM 转换成 2016-01-14 。转换所有日期后,我的应用程序崩溃并收到
错误
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1035)
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ at java.text.DateFormat.parse(DateFormat.java:577)
在这一行date = dateFormat.parse(strSqliteDate);
第二次在 line = calendar.setTime(date);
处出错
Caused by: java.lang.NullPointerException: Attempt to invoke virtual
method 'long java.util.Date.getTime()' on a null object reference
at java.util.Calendar.setTime(Calendar.java:1195)
这里是DBhelper中的日期转换代码class
String strSqliteDate = cursor.getString(cursor.getColumnIndex("ActionDate"));
Log.e(" strSqliteDate "," = " + strSqliteDate);
String result = "";
Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try
{
date = dateFormat.parse(strSqliteDate);
}
catch(Exception e)
{
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat printFormat = new SimpleDateFormat("yyyy-MM-dd");
result = printFormat.format(calendar.getTime());
Log.e("result = ","==========>"+result);
使用subString方法参考Refers link
strSqliteDate.subString(0,10)
Output will be==>> 2016-01-14
在使用变量 strSqliteDate 之前检查它是否为空?
String strSqliteDate = cursor.getString(cursor.getColumnIndex("ActionDate"));
if(strSqliteDate != null && !strSqliteDate .isEmpty())
{
Log.e(" strSqliteDate "," = " + strSqliteDate);
String result = "";
Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try
{
date = dateFormat.parse(strSqliteDate);
}
catch(Exception e)
{
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat printFormat = new SimpleDateFormat("yyyy-MM-dd");
result = printFormat.format(calendar.getTime());
Log.e("result = ","==========>"+result);
}
你的date = dateFormat.parse(strSqliteDate);
strSqliteDate
是 null 这就是你得到 NPE
的原因
Caused by: java.lang.NullPointerException: Attempt to invoke virtual
method 'long java.util.Date.getTime()' on a null object reference at
java.util.Calendar.setTime(Calendar.java:1195)
根据您的问题,您应该使用 substring()
并检查您的 数据库 是否 null
。
This method has two variants and returns a new string that is a
substring of this string. The substring begins with the character at
the specified index and extends to the end of this string or up to
endIndex - 1 if second argument is given.
.substring(startIndex, endIndex);
strSqliteDate = 2016-01-14 05:34:50 PM
System.out.println(strSqliteDate.substring(0, 11) );
第
行
result = printFormat.format(calendar.getTime());
在 formate()
..
的参数中传递 Date class 的引用
我想把 strSqliteDate: = 2016-01-14 05:34:50 PM 转换成 2016-01-14 。转换所有日期后,我的应用程序崩溃并收到
错误02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1035)
02-01 12:03:15.204 7619-7619/com.example.tazeen.classnkk W/System.err﹕ at java.text.DateFormat.parse(DateFormat.java:577)
在这一行date = dateFormat.parse(strSqliteDate);
第二次在 line = calendar.setTime(date);
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference at java.util.Calendar.setTime(Calendar.java:1195)
这里是DBhelper中的日期转换代码class
String strSqliteDate = cursor.getString(cursor.getColumnIndex("ActionDate"));
Log.e(" strSqliteDate "," = " + strSqliteDate);
String result = "";
Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try
{
date = dateFormat.parse(strSqliteDate);
}
catch(Exception e)
{
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat printFormat = new SimpleDateFormat("yyyy-MM-dd");
result = printFormat.format(calendar.getTime());
Log.e("result = ","==========>"+result);
使用subString方法参考Refers link
strSqliteDate.subString(0,10)
Output will be==>> 2016-01-14
在使用变量 strSqliteDate 之前检查它是否为空?
String strSqliteDate = cursor.getString(cursor.getColumnIndex("ActionDate"));
if(strSqliteDate != null && !strSqliteDate .isEmpty())
{
Log.e(" strSqliteDate "," = " + strSqliteDate);
String result = "";
Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try
{
date = dateFormat.parse(strSqliteDate);
}
catch(Exception e)
{
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat printFormat = new SimpleDateFormat("yyyy-MM-dd");
result = printFormat.format(calendar.getTime());
Log.e("result = ","==========>"+result);
}
你的date = dateFormat.parse(strSqliteDate);
strSqliteDate
是 null 这就是你得到 NPE
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference at java.util.Calendar.setTime(Calendar.java:1195)
根据您的问题,您应该使用 substring()
并检查您的 数据库 是否 null
。
This method has two variants and returns a new string that is a substring of this string. The substring begins with the character at the specified index and extends to the end of this string or up to endIndex - 1 if second argument is given.
.substring(startIndex, endIndex);
strSqliteDate = 2016-01-14 05:34:50 PM
System.out.println(strSqliteDate.substring(0, 11) );
第
行result = printFormat.format(calendar.getTime());
在 formate()
..