2017-02-24 7 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

関連する問題