2014-04-23 73 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);