2014-12-17 5 views
4

У меня странная проблема в приложении для Android. У меня есть ArrayList, и я пытаюсь получить первый элемент с get (0). Но приложение иногда сбой из-за исключения IndexOutOfBoundsException.ArrayList IndexOutOfBoundsException в позиции 0

Код:

int currentItemPosition = 0; 
if(!mArrayList.isEmpty()) { 
    currentItem = mArrayList.get(currentItemPosition); 
} 

Как это возможно?

Журнал:

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
at java.util.ArrayList.get(ArrayList.java:308) 
... 
+9

Доступен ли 'mArrayList'/обновлен несколькими потоками? – Eran

+0

youe mArrayList пуст и u получает значение из списка –

+1

Это реальный код, который вы используете или демо? – amit

ответ

0

Как описано (один ArrayList, один поток, & с), проблема кажется своего рода "невозможно". Однако, если это (http://pastebin.com/2fYnbG9b) Ваш фактический фрагмент:

private void showFirstItemOfPage() { 
    mCurrentBlockItem = 0; 
    if(mBlocksList.get(mPager.getCurrentItem()) != null && !mBlocksList.get(mPager.getCurrentItem()).isEmpty()) 
    { 
     addSingleItem(mBlocksList.get(mPager.getCurrentItem()).get(mCurrentBlockItem)); 
    }  
} 

возможно, ответ в том, что mBlocksList на самом деле пусто? Вы не проверяете isEmpty() за , что список, только для его списков.

+0

Как я сказал в комментариях. «Проблема в том, что я не могу воспроизвести этот сбой - но журналы сбоев в консоли разработчика сообщают мне, что в этой строке выбрано IndexOutOfBoundsException» I nullcheck элемент mBlocklist - если mBlocklist будет вызывать исключение OOBException. Но журнал сбоев относится к строке addSingleItem. – Fabian

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