2013-08-28 61 views
0

我在我的應用程序中有一些奇怪的NullPointerException。字符串空指針異常

我運行此代碼:

protected void onPostExecute(Void result) 
{    

    Log.i("name1", userProfilePictures[positionForPicture][0]); 

    if(movedToAnotherActivity) 
     return; 

    if(loadNewPosts && loaded10More == false) 
    {   
     firstLoopPicture = true; 
     positionForPicture = 0; 
     return; 
    } 

    if((positionForPicture == userProfilePictures.length) == false) 
    { 
     new GetUserPicture().execute(); 

     int loadLength = loadedPostsSaverForPictures.length; 

     String name = userProfilePictures[positionForPicture][0]; 

     Log.i("name", name); 
    } 
} 

... ... ...

而且我在這行獲得空指針異常:

String name = userProfilePictures[positionForPicture][0]; 
    Log.i("name", name); 

登錄貓:

08-28 17:39:28.140: E/AndroidRuntime(26801): FATAL EXCEPTION: main 
08-28 17:39:28.140: E/AndroidRuntime(26801): java.lang.NullPointerException: println needs a message 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.util.Log.println_native(Native Method) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.util.Log.i(Log.java:159) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at com.example.workoutlog.WorkoutsWall$GetUserPicture.onPostExecute(WorkoutsWall.java:3420) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at com.example.workoutlog.WorkoutsWall$GetUserPicture.onPostExecute(WorkoutsWall.java:1) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.os.AsyncTask.finish(AsyncTask.java:631) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.os.Looper.loop(Looper.java:137) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at android.app.ActivityThread.main(ActivityThread.java:5226) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at java.lang.reflect.Method.invokeNative(Native Method) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at java.lang.reflect.Method.invoke(Method.java:511) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
08-28 17:39:28.140: E/AndroidRuntime(26801): at dalvik.system.NativeStart.main(Native Method) 

奇怪的是,這一行之前,我有這樣的代碼:

Log.i("name1", userProfilePictures[positionForPicture][0]); 

這給我字符串並且非空的錯誤。

爲什麼我得到空指針異常?它相同的字符串...

+1

數據'userProfilePictures [positionForPicture] [0]'似乎是空。 –

+0

那麼,爲什麼我運行這段代碼時得不到空字符串呢? Log.i(「name1」,userProfilePictures [positionForPicture] [0]); – dasdasd

+2

在'new GetUserPicture()。execute();'中,你會做一些處理來改變'userProfilePictures'的內容嗎? – jbihan

回答

0

如果這個異步任務正在加載你的數組userProfilePictures你應該等待答案。 在postexecute返回一個布爾值,並做:存儲在數組

Boolean b= new GetUserPicture().execute();