2013-08-28 57 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();