#android #spinner
#Android #счетчик
Вопрос:
У меня проблема с интерпретацией трассировки стека.. Проблема в том, что в моем пакете нет класса, и поэтому мне трудно выяснить, что происходит.. Когда я запускал трассировку, я думаю, что речь идет об адаптере и spinner, но на этой странице у меня есть 6 spinner, я отлаживал их все и не нашел ничего странного (например, 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)
Я не знаю, что делать..
Комментарии:
1. Я хотел бы увидеть код.
Ответ №1:
Посмотрите, вызвана ли функция setSelection () для любого из блесен, индекс которых может превышать размер адаптера блесны. например, если ваш счетчик содержит два элемента, и если вы вызываете setSelection(2), это приведет к исключению IndexOutOfBoundsException.
Комментарии:
1. На самом деле нам понадобилось бы больше кода, чтобы знать это, но, по крайней мере, вы попробовали, ха-ха 🙂
2. У меня была такая же проблема, и да, это был неправильный setSelection (). Проблема в том, что исключение возникает не из вашего кода, а из потоков Android, поэтому трудно выяснить, в чем проблема. Удачи!
Ответ №2:
В дополнение к комментарию @ 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) amp;amp; (index < count) ) {
spin.setSelection(index, animate);
}
else { // do nothing
}
}
Комментарии:
1. это было на самом деле, что я нашел.
2. установите для проверки spin значение null!
Ответ №3:
Чтобы найти, в каком spinner проблема:
- Создайте резервную копию своей страницы
- Удалить 5 из 6 блесен
- Протестируйте страницу
- Повторите, чтобы сохранить только 1 счетчик одновременно, пока вы не закончите тестировать каждый счетчик на своей странице
Это то, что я бы сделал. Я надеюсь, что это поможет.