2016-09-24 82 views
0

我想趁自己總是這個錯誤:嘗試獲取空數組的長度

FATAL EXCEPTION: OkHttp Dispatcher 
Process: com.langa.a1956, PID: 24253 
java.lang.NullPointerException: Attempt to get length of null array 
com.langa.a1956.Archivum.UI.SzabadEuMusorokLeirasActivity$1$1.startActivityJSON(SzabadEuMusorokLeirasActivity.java:49) 

這是我的代碼:

mNextButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      page = 1; 
      while (page <= 27) { 
       jsonData = new JSON("http://1956.osaarchivum.org/api/items?collection=13&page=" + page + "&per_page=50", SzabadEuMusorokLeirasActivity.this); 
       Log.v("Current page:", page + ""); 
       jsonData.mJSONInterface = new JSONInterface() { 
        @Override 
        public void startActivityJSON() { 
         for (int i = 0; i < jsonData.getCollections().length; i++) { 
          Log.v("Current I:", i + ""); 
          final JSONMedia jsonMedia = new JSONMedia(jsonData.getCollections()[i].getMediaURL(), SzabadEuMusorokLeirasActivity.this); 
          final int finalI = i; 
          jsonMedia.mJSONMediaInterface = new JSONInterface() { 
           @Override 
           public void startActivityJSON() { 
            jsonData.getCollections()[finalI].setMediaURL(jsonMedia.getMediaUrl()); 
            mCollectionList.add(jsonData.getCollections()[finalI]); 
            Log.v("NEWMEDIA", jsonMedia.getMediaUrl()); 
           } 
          }; 
         } 
         page++; 
        } 
       }; 
      } 
     } 
    }); 

我想讀出JSON對象的不同的頁面,但它將無法正常工作...當我嘗試使用jsonData變量進行操作時,它總是崩潰。

+0

此問題的可能原因是jsonData.getCollections()。length其中jsonData正在初始化,但它的集合仍爲null。所以你可以看看JSON類和響應,因爲可能JSON類中的collection變量沒有初始化,因此無法響應API的空響應/空響應。 – EEJ

回答

0

在嘗試訪問jsonData對象之前,先測試它是否爲空。如果不爲空,則繼續。

if (jsonData != null) { 
    // Array accessing code here 
} 
+0

謝謝,但現在我開始'太多打開文件'例外... – Marci

+0

你確定調用增加頁面仍然被調用,即使爲null?可能值得搜索/作爲一個單獨的問題要求 – Graeme

+0

你是什麼意思?我認爲問題在於它太慢了......它不會及時加載,因此超時。 – Marci