2014-04-23 72 views
0

我的日历有问题。 下面是代码:AndroidStudio Calendar.get(Calendar.DAY_OF_MONTH)nullPointer异常

Calendar mCalendar = Calendar.getInstance(); 
mToday[0] = mCalendar.get(Calendar.DAY_OF_MONTH); 
mToday[1] = mCalendar.get(Calendar.MONTH); // zero based 
mToday[2] = mCalendar.get(Calendar.YEAR); 

不能运行我的项目,因为AndroidStudio显示了Calendar.DAY_OF_MONTHCalendar.MONTH等错误...我得到nullPointException在模拟器中运行,而

它SAIS是

必须是以下其中一个: java.util.Calendar.DAY_OF_MONTHjava.util.Calendar.MONTH等...

因为Calendar.MONTHjava.util.calendar.MONTH

一个我不明白,这个错误我有一个导入它

import java.util.Calendar; 

对不起,我错过了,它的初始化,但有一个其他类,我想用日历.MONTH等这样的:

mCalendarToday = Calendar.getInstance(); 

... 

int dayOfWeek = mCalendar.get(Calendar.DAY_OF_WEEK); 
int firstDay = getDay(mCalendar.get(Calendar.DAY_OF_WEEK); 

OR

private Calendar mCalendarToday; 

... 

private boolean isToday(int day, int month, int year) { 
    if (mCalendarToday.get(Calendar.MONTH) == month 
     && mCalendarToday.get(Calendar.YEAR) == year 
     && mCalendarToday.get(Calendar.DAY_OF_MONTH) == day) { 
     return true; 
    } 
    return false; 
} 

这里也显示错误。还有我会用到的所有其他线路。

+3

如果你不能建立你的项目,你不能得到一个NullPointerException ...这是什么? –

+0

我不明白如何在无法构建项目时发生NullPointerException。 我尝试了我的Eclipse中的代码,我没有语法错误。只是一个调查的提示 - 尝试通过1而不是年,2而不是MONTH和5而不是DAY_OF_MONTH。 如果您有NullPointerException,那么可能是该项目已构建并运行,但该数组未初始化。 – Michal

+0

对不起... 问题已编辑。 我可以构建,但在模拟器运行期间停止。 问题不在int字段中。 也许这是Android Studio中的错误,我会在Eclipse中尝试。 – Gao

回答

0

我确实相信您访问日历的方式是正确的。

我猜int[]你尝试添加的值未初始化。 必须调用

int[] mToday = new int[3]; 
0

硬编码。但必须工作。

int[] mToday = new int[]{}; 
    java.util.Calendar calendar = java.util.Calendar.getInstance(); 
    mToday[0] = calendar.get(java.util.Calendar.DAY_OF_MONTH); 
    mToday[1] = calendar.get(java.util.Calendar.MONTH); 
    mToday[2] = calendar.get(java.util.Calendar.YEAR); 
+2

你正在初始化一个零位置的int数组... – Smokez

0

也许你没有初始化你的领域。我试图在Eclipse和这个工作

int[] mToday = new int[10]; 
Calendar mCalendar = Calendar.getInstance(); 
mToday[0] = mCalendar.get(Calendar.DAY_OF_MONTH); 
mToday[1] = mCalendar.get(Calendar.MONTH); // zero based 
mToday[2] = mCalendar.get(Calendar.YEAR);