2017-02-24 3 views
1

Ich versuche, Werte von 5 URL`s hier um den Code zu nehmen:Fehler in doInBackground()

new JsonTask().execute(urlPosts, urlPhotos, urlComments, urlComments, urlAlbums, urlUsers); 

aber bin ich in dieser Klasse stecken zu bleiben:

protected JSONObject[] doInBackground(String... params) { 

     URLConnection urlConnection = null; 
     BufferedReader bufferedReader = null; 
     JSONObject[] jsonObjects = new JSONObject[4]; 

     jsonObjects[0] = getPosts(); 
     jsonObjects[1] = getPhotos(); 
     jsonObjects[2] = getComments(); 
     jsonObjects[3] = getAlbums(); 
     jsonObjects[4] = getUsers(); 

     return jsonObjects; 
    } 

Der Fehler:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
       Process: com.example.marcellosouza.saberproject, PID: 12105 
       java.lang.RuntimeException: An error occurred while executing doInBackground() 
        at android.os.AsyncTask$3.done(AsyncTask.java:309) 
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
        at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
        at java.lang.Thread.run(Thread.java:818) 
       Caused by: java.lang.ArrayIndexOutOfBoundsException: length=4; index=4 
        at com.example.marcellosouza.saberproject.view.activity.MainPageBlogActivity$JsonTask.doInBackground(MainPageBlogActivity.java:102) 
        at com.example.marcellosouza.saberproject.view.activity.MainPageBlogActivity$JsonTask.doInBackground(MainPageBlogActivity.java:80) 
        at android.os.AsyncTask$2.call(AsyncTask.java:295) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
        at java.lang.Thread.run(Thread.java:818)  

Warum bekomme ich diesen Fehler? Wie kann ich es lösen? Danke.

Antwort

1

Why am i getting this error?

Sie sind deutlich gesagt, warum - nur sorgfältig ganzen Stacktrace lesen:

Caused by: java.lang.ArrayIndexOutOfBoundsException: length=4; index=4

Es sagt Ihnen auch, dass Ihre Array-4-Element in der Größe (Länge = 4), aber Sie versuchen, außerhalb zu erreichen davon ->index=4. Da Array-Indizes bei 0 beginnen, bedeutet 4 5. Element, daher der Absturz.

Der Stacktrace dann sagt Ihnen, wo der fehlerhafte Code:

com.example.marcellosouza.saberproject.view.activity.MainPageBlogActivity $JsonTask.doInBackground(MainPageBlogActivity.java:102)

Was Sie falsch machen - Sie erklären 4-Element-Array:

JSONObject[] jsonObjects = new JSONObject[4]; 

aber später versuchen Sie 5 in es zu stopfen :

jsonObjects[0] = getPosts(); 
    jsonObjects[1] = getPhotos(); 
    jsonObjects[2] = getComments(); 
    jsonObjects[3] = getAlbums(); 
    jsonObjects[4] = getUsers(); 

Das wird nicht funktionieren. Fix jsonObjects Erstellung oder Verwendung, d. H. ArrayList, um Arrays fester Größe zu vermeiden.

+1

Danke! Problem gelöst. – Marc

Verwandte Themen