Numberpicker выдает ArrayIndexOutOfBoundsException при прокрутке значений

Эй, у меня есть простой NumberPicker с 15 значениями (100,200,300,400, …, 1500). И когда я просматриваю числа, числопикер бросает исключение ArrayIndexOutOfBoundsException, когда я подхожу к номеру 1400 (позиция 13). См. Журнал ниже.

Но я действительно понятия не имею. Кажется, что это ошибка класса numberpicker.

Вот мой код:

tv_radius.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final Dialog dialog = new Dialog(CostLogActivity2.this); dialog.setContentView(R.layout.radius_picker); dialog.setTitle("Radius"); NumberPicker np_radius = (NumberPicker) dialog.findViewById(R.id.np_radius); np_radius.setMaxValue(100); // max value 100 np_radius.setMinValue(1); // min value 1 np_radius.setWrapSelectorWheel(false); String[] displayedValues = new String[15]; int x=0; for(int i=0; i<displayedValues.length; i++){ x = x+100; displayedValues[i] = Integer.toString(x); } np_radius.setDisplayedValues(displayedValues); np_radius.setOnValueChangedListener(new OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { // TODO Auto-generated method stub } }); dialog.show(); } }); 

Журнал ошибок:

 04-07 13:55:33.383: E/AndroidRuntime(20233): FATAL EXCEPTION: main 04-07 13:55:33.383: E/AndroidRuntime(20233): java.lang.ArrayIndexOutOfBoundsException: length=15; index=15 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.widget.NumberPicker.ensureCachedScrollSelectorValue(NumberPicker.java:1774) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.widget.NumberPicker.incrementSelectorIndices(NumberPicker.java:1739) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.widget.NumberPicker.scrollBy(NumberPicker.java:1008) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.widget.NumberPicker.computeScroll(NumberPicker.java:964) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.drawChild(ViewGroup.java:2729) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.View.getDisplayList(View.java:10475) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.View.getDisplayList(View.java:10475) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.View.getDisplayList(View.java:10475) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.View.getDisplayList(View.java:10475) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.View.draw(View.java:11041) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.widget.FrameLayout.draw(FrameLayout.java:450) 04-07 13:55:33.383: E/AndroidRuntime(20233): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2151) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.View.getDisplayList(View.java:10477) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:873) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewRootImpl.draw(ViewRootImpl.java:1914) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1638) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2452) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.os.Handler.dispatchMessage(Handler.java:99) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.os.Looper.loop(Looper.java:137) 04-07 13:55:33.383: E/AndroidRuntime(20233): at android.app.ActivityThread.main(ActivityThread.java:4464) 04-07 13:55:33.383: E/AndroidRuntime(20233): at java.lang.reflect.Method.invokeNative(Native Method) 04-07 13:55:33.383: E/AndroidRuntime(20233): at java.lang.reflect.Method.invoke(Method.java:511) 04-07 13:55:33.383: E/AndroidRuntime(20233): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822) 04-07 13:55:33.383: E/AndroidRuntime(20233): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:589) 04-07 13:55:33.383: E/AndroidRuntime(20233): at dalvik.system.NativeStart.main(Native Method) 

Кто-нибудь знает, как это исправить?

Это не ошибка. Из документов :

Длина массива отображаемых значений должна быть равна диапазону выбираемых чисел, который равен getMaxValue() - getMinValue() + 1 .

Ваш maxValue равен 100, а minValue равно 1. Поэтому просто используйте это:

 numberPicker.setMaxValue(14); numberPicker.setMinValue(0); 

Вы также можете посмотреть здесь

Документация по Android для вашей проблемы находится здесь .

Проблема заключается в этом фрагменте кода np_radius.setMaxValue(100) . Вы должны заменить эту строку на np_radius.setMaxValue(14) .