Android 带动态列表的数字选择器

Android 带动态列表的数字选择器,android,Android,我一直在用动态列表实现numpicker,也就是说,在某些事件中会发生变化,比如说可能是单击按钮或其他。问题是,每当我将列表从较大的长度切换到较小的长度时,它就会工作,从较小的长度切换到较大的长度时,它不会改变,而我总是将第一项设置为选定项,它会崩溃 代码: 日志: 06-20 13:02:16.712: E/AndroidRuntime(16793): FATAL EXCEPTION: main 06-20 13:02:16.712: E/AndroidRuntime(16793): java

我一直在用动态列表实现numpicker,也就是说,在某些事件中会发生变化,比如说可能是单击按钮或其他。问题是,每当我将列表从较大的长度切换到较小的长度时,它就会工作,从较小的长度切换到较大的长度时,它不会改变,而我总是将第一项设置为选定项,它会崩溃

代码:

日志:

06-20 13:02:16.712: E/AndroidRuntime(16793): FATAL EXCEPTION: main
06-20 13:02:16.712: E/AndroidRuntime(16793): java.lang.IllegalStateException: Could not execute method of the activity
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View$1.onClick(View.java:3606)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View.performClick(View.java:4211)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View$PerformClick.run(View.java:17446)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.os.Handler.handleCallback(Handler.java:725)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.os.Looper.loop(Looper.java:153)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.app.ActivityThread.main(ActivityThread.java:5297)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invokeNative(Native Method)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invoke(Method.java:511)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at dalvik.system.NativeStart.main(Native Method)
06-20 13:02:16.712: E/AndroidRuntime(16793): Caused by: java.lang.reflect.InvocationTargetException
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invokeNative(Native Method)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invoke(Method.java:511)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View$1.onClick(View.java:3601)
06-20 13:02:16.712: E/AndroidRuntime(16793):    ... 11 more
06-20 13:02:16.712: E/AndroidRuntime(16793): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=4
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.widget.NumberPicker.ensureCachedScrollSelectorValue(NumberPicker.java:1722)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.widget.NumberPicker.initializeSelectorWheelIndices(NumberPicker.java:1537)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.widget.NumberPicker.setMaxValue(NumberPicker.java:1345)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at com.example.numpicker.MainActivity.onClick(MainActivity.java:85)
06-20 13:02:16.712: E/AndroidRuntime(16793):    ... 14 more

onClick
中的
setMaxValue
之前调用
setDisplayedValues(null)
尝试设置numPicker.setMaxValue(0);在每次更改新的maxValue之前,这可能会有所帮助。我知道我们必须重置!但不知道调用哪个函数:-)它工作了!!经过大量的搜索,终于找到了解决方案,它成功了,谢谢你这么多的兄弟,它真的很有帮助!
06-20 13:02:16.712: E/AndroidRuntime(16793): FATAL EXCEPTION: main
06-20 13:02:16.712: E/AndroidRuntime(16793): java.lang.IllegalStateException: Could not execute method of the activity
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View$1.onClick(View.java:3606)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View.performClick(View.java:4211)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View$PerformClick.run(View.java:17446)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.os.Handler.handleCallback(Handler.java:725)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.os.Looper.loop(Looper.java:153)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.app.ActivityThread.main(ActivityThread.java:5297)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invokeNative(Native Method)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invoke(Method.java:511)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at dalvik.system.NativeStart.main(Native Method)
06-20 13:02:16.712: E/AndroidRuntime(16793): Caused by: java.lang.reflect.InvocationTargetException
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invokeNative(Native Method)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at java.lang.reflect.Method.invoke(Method.java:511)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.view.View$1.onClick(View.java:3601)
06-20 13:02:16.712: E/AndroidRuntime(16793):    ... 11 more
06-20 13:02:16.712: E/AndroidRuntime(16793): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=4
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.widget.NumberPicker.ensureCachedScrollSelectorValue(NumberPicker.java:1722)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.widget.NumberPicker.initializeSelectorWheelIndices(NumberPicker.java:1537)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at android.widget.NumberPicker.setMaxValue(NumberPicker.java:1345)
06-20 13:02:16.712: E/AndroidRuntime(16793):    at com.example.numpicker.MainActivity.onClick(MainActivity.java:85)
06-20 13:02:16.712: E/AndroidRuntime(16793):    ... 14 more