2015-01-14 42 views
-1

據我所知,所有變量都由我用調試器檢查過,它們都不爲空。該應用程序拋出NullPointerException,但找不到原因

我 「getCurrentGameId」 從GameService.java方法:

public long getCurrentGameId() { 
    if(mGame != null && mGame.mModel != null) { 
     return mGame.mModel.getId(); 
    } 
    return 0; 
} 

錯誤:

Process: com.soccertimer.android.debug, PID: 28143 
java.lang.NullPointerException 
     at com.soccertimer.android.services.GameService.getCurrentGameId(GameService.java:107) 
     at com.soccertimer.android.ui.GameListFragment.onListItemClick(GameListFragment.java:82) 
     at com.soccertimer.android.ui.GameListFragment$$ViewInjector$1.onItemClick(GameListFragment$$ViewInjector.java:20) 
     at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
     at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 
     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2911) 
     at android.widget.AbsListView$3.run(AbsListView.java:3645) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5146) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
     at dalvik.system.NativeStart.main(Native Method) 
+3

'getId'返回'Long'還是'long'? – njzk2

+0

很長,這就是問題所在! – Idob

+0

作爲一個對象的'長',可以將一個不能被autounboxed的值設置爲'long',即'null'。只有你可以決定你想要在這種情況下有什麼行爲。 – njzk2

回答

0

因爲getCurrentGameId()方法,該方法返回longgetId()法之間的衝突引發的異常,其返回Long。 因此,當getId()方法返回null時,拋出NullPointerException

更改getCurrentGameId()返回Long做了伎倆。

相關問題