2016-09-24 6 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 инициализируется, но его коллекция по-прежнему равна нулю. Таким образом, вы можете взглянуть на класс JSON, а также на ответ, потому что возможно, что переменная коллекции внутри класса JSON не получает инициализированный отказ от ответа NULL/пустой от API. – EEJ

ответ

0

Прежде чем пытаться получить доступ к объекту jsonData, проверьте, имеет ли он значение null сначала. Если не null, то продолжайте.

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

Спасибо, но теперь я получаю исключение слишком много открытых файлов ... – Marci

+0

Вы убеждались, что вызов дополнительной страницы еще называется даже для нулевого? Возможно, стоит искать/задавать это как отдельный вопрос. – Graeme

+0

Что вы подразумеваете под этим? Я думаю, проблема в том, что она слишком медленная ... она не будет загружаться вовремя, так что это время. – Marci

Смежные вопросы