2017-02-24 40 views
1

我想在這裏需要5個URL`s值碼:錯誤doInBackground()

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

但是,我陷在這個類:

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

的錯誤:

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)  

爲什麼我得到這個錯誤?我該如何解決它?謝謝。

回答

1

Why am i getting this error?

你都清楚地告知原因 - 只要仔細閱讀整個堆棧跟蹤:

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

它甚至可以告訴你,你的數組的大小是4元(長度= 4),但你想外面到達它 - >index=4。由於數組索引起始於0,因此4意味着第5個元素,因此崩潰。

然後堆棧跟蹤告訴你哪裏有故障碼爲:

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

你做錯了什麼 - 你聲明4元素數組:

JSONObject[] jsonObjects = new JSONObject[4]; 

但後來嘗試在它的東西5 :

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

這不會奏效。修復jsonObjects創建或使用,即ArrayList以避免固定大小的陣列。

+1

謝謝!問題解決了。 – Marc

相關問題