IndexOutOfBounds на Spinner? - PullRequest
       14

IndexOutOfBounds на Spinner?

6 голосов
/ 29 апреля 2011

У меня проблема с интерпретацией трассировки стека. Проблема в том, что в моем пакете нет класса, и поэтому мне сложно выяснить, что происходит .. Поскольку я следил за трассировкой, я думаю, что это адаптер и счетчик, но на этой странице у меня есть 6 счетчиков, я отлаживаю их все и не нашел ничего странного (например, selectedItemPosition или что-то в этом роде) ..

Может, у кого-то была похожая проблема? Вот твой след. Если вам нужен код, скажите мне

    Uncaught handler: thread main exiting due to uncaught exception
    java.lang.IndexOutOfBoundsException
     at java.util.Arrays$ArrayList.get(Arrays.java:72)
     at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:298)
     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:351)
     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
     at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:198)
     at android.view.View.measure(View.java:7987)
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
     at android.view.View.measure(View.java:7987)
     at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:893)
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
     at android.widget.ScrollView.onMeasure(ScrollView.java:276)
     at android.view.View.measure(View.java:7987)
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
     at android.view.View.measure(View.java:7987)
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
     at android.view.View.measure(View.java:7987)
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
     at android.view.View.measure(View.java:7987)
     at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:123)
     at android.app.ActivityThread.main(ActivityThread.java:4363)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:521)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
     at dalvik.system.NativeStart.main(Native Method)

Я не знаю, что делать ..

Ответы [ 3 ]

16 голосов
/ 07 мая 2011

Проверьте, вызвана ли у вас функция setSelection () для любого из счетчиков, индекс которых может быть больше, чем размер адаптера счетчика.например, если у вашего счетчика есть два элемента, и если вы вызовете setSelection (2), это приведет к исключению IndexOutOfBoundsException.

0 голосов
/ 03 сентября 2014

Продолжая комментарий @FrancescoR, этот код может помочь вам избежать сбоя кода при попытке отследить неправильный вызов. Мне пришлось ответить на этот вопрос, потому что добавление кода в комментарии было довольно неприятным.

private void spinnerSetSelectionChecked(Spinner spin, int index) {
    spinnerSetSelectionChecked(spin, index, true);
}
private void spinnerSetSelectionChecked(Spinner spin, int index, boolean animate) {
    final int count = spin.getAdapter().getCount();
    if( (count > 0) && (index < count) ) {
        spin.setSelection(index, animate);
    }
    else { // do nothing
    }
}
0 голосов
/ 08 мая 2011

Чтобы найти, какой прядильщик имеет проблему:

  • Создайте резервную копию своей страницы
  • Удалите 5 из 6 прядильщиков
  • Проверьтеpage
  • Повторите, чтобы сохранить только один счетчик за раз, пока вы не закончили тестировать каждый счетчик на своей странице

Это то, что я бы сделал.Я надеюсь, что это поможет.

...