2013-08-28 3 views
0

J'ai une étrange NullPointerException à mon application.String null pointeur exception

J'exécuter ce code:

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); 
    } 
} 

... ... ...

et je reçois NullPointerException sur cette ligne:

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

Connexion chat :

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) 

La chose étrange est que devant ce sens que j'ai ce code:

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

Ce qui me donne la chaîne et non une erreur nulle. Pourquoi est-ce que j'obtiens une exception de pointeur nul? C'est la même chaîne ...

+1

Les données stockées dans le tableau 'userProfilePictures [positionForPicture] [0]' semble être nulle. –

+0

Alors pourquoi je n'obtiens aucune chaîne nulle quand j'exécute ce code? Log.i ("name1", userProfilePictures [positionForPicture] [0]); – dasdasd

+2

Dans 'new GetUserPicture(). Execute();', effectuez-vous un traitement susceptible d'altérer le contenu de 'userProfilePictures'? – jbihan

Répondre

0

Si cette tâche asynchrone charge votre tableau userProfilePictures vous devriez attendre la réponse. retourner un booléen dans le postExecute et faire:

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