react-native-picker-select: [Android] FATAL EXCEPTION java.lang.ArrayIndexOutOfBoundsException
The Android app is crashing when reseting items and value at the same time.
In my app I have 3 dropdown which depend on each other, every time I try change the value from the first, I need to reset the items and value of the 2 others, and when that happen on Android the app crashed right away.
Expected behavior
By clearing the items array and the value, the picker should display the picker without any items.
Smartphone (please complete the following information):
- Device: All of them
- OS: Android
- react-native-picker-select version: 6.3.0
- react-native version: 0.60.4
- react version: 16.8.6
Logs
07-30 17:30:34.390 E unknown ReactNative: Exception in native call
07-30 17:30:34.390 E unknown ReactNative: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
07-30 17:30:34.390 E unknown ReactNative: at java.util.Arrays$ArrayList.get(Arrays.java:3769)
07-30 17:30:34.390 E unknown ReactNative: at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:393)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.views.picker.ReactPickerManager$ReactPickerAdapter.getView(ReactPickerManager.java:116)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.views.picker.ReactPickerManager$ReactPickerAdapter.getView(ReactPickerManager.java:107)
07-30 17:30:34.390 E unknown ReactNative: at android.widget.Spinner.makeView(Spinner.java:712)
07-30 17:30:34.390 E unknown ReactNative: at android.widget.Spinner.layout(Spinner.java:660)
07-30 17:30:34.390 E unknown ReactNative: at android.widget.AbsSpinner.setSelectionInt(AbsSpinner.java:306)
07-30 17:30:34.390 E unknown ReactNative: at android.widget.AbsSpinner.setSelection(AbsSpinner.java:283)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.views.picker.ReactPicker.commitStagedData(ReactPicker.java:142)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.views.picker.ReactPickerManager.onAfterUpdateTransaction(ReactPickerManager.java:80)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.views.picker.ReactPickerManager.onAfterUpdateTransaction(ReactPickerManager.java:36)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:47)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:139)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.UIViewOperationQueue$UpdatePropertiesOperation.execute(UIViewOperationQueue.java:93)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:844)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:952)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.UIViewOperationQueue.access$2200(UIViewOperationQueue.java:44)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1012)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:172)
07-30 17:30:34.390 E unknown ReactNative: at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84)
07-30 17:30:34.390 E unknown ReactNative: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
07-30 17:30:34.390 E unknown ReactNative: at android.view.Choreographer.doCallbacks(Choreographer.java:761)
07-30 17:30:34.390 E unknown ReactNative: at android.view.Choreographer.doFrame(Choreographer.java:693)
07-30 17:30:34.390 E unknown ReactNative: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
07-30 17:30:34.390 E unknown ReactNative: at android.os.Handler.handleCallback(Handler.java:873)
07-30 17:30:34.390 E unknown ReactNative: at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 17:30:34.390 E unknown ReactNative: at android.os.Looper.loop(Looper.java:193)
07-30 17:30:34.390 E unknown ReactNative: at android.app.ActivityThread.main(ActivityThread.java:6669)
07-30 17:30:34.390 E unknown ReactNative: at java.lang.reflect.Method.invoke(Native Method)
07-30 17:30:34.390 E unknown ReactNative: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
07-30 17:30:34.390 E unknown ReactNative: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
07-30 17:30:34.393 D AndroidRuntime Shutting down VM
07-30 17:30:34.393 E AndroidRuntime FATAL EXCEPTION: main
07-30 17:30:34.393 E AndroidRuntime java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
07-30 17:30:34.393 E AndroidRuntime at java.util.Arrays$ArrayList.get(Arrays.java:3769)
07-30 17:30:34.393 E AndroidRuntime at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:393)
07-30 17:30:34.393 E AndroidRuntime at com.facebook.react.views.picker.ReactPickerManager$ReactPickerAdapter.getView(ReactPickerManager.java:116)
07-30 17:30:34.393 E AndroidRuntime at com.facebook.react.views.picker.ReactPickerManager$ReactPickerAdapter.getView(ReactPickerManager.java:107)
07-30 17:30:34.393 E AndroidRuntime at android.widget.Spinner.makeView(Spinner.java:712)
07-30 17:30:34.393 E AndroidRuntime at android.widget.Spinner.layout(Spinner.java:660)
07-30 17:30:34.393 E AndroidRuntime at android.widget.Spinner.onLayout(Spinner.java:622)
07-30 17:30:34.393 E AndroidRuntime at com.facebook.react.views.picker.ReactPicker.onLayout(ReactPicker.java:98)
07-30 17:30:34.393 E AndroidRuntime at android.view.View.layout(View.java:20672)
07-30 17:30:34.393 E AndroidRuntime at android.view.ViewGroup.layout(ViewGroup.java:6194)
07-30 17:30:34.393 E AndroidRuntime at com.facebook.react.views.picker.ReactPicker$2.run(ReactPicker.java:81)
07-30 17:30:34.393 E AndroidRuntime at android.os.Handler.handleCallback(Handler.java:873)
07-30 17:30:34.393 E AndroidRuntime at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 17:30:34.393 E AndroidRuntime at android.os.Looper.loop(Looper.java:193)
07-30 17:30:34.393 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:6669)
07-30 17:30:34.393 E AndroidRuntime at java.lang.reflect.Method.invoke(Native Method)
07-30 17:30:34.393 E AndroidRuntime at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
07-30 17:30:34.393 E AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 16
Workaround Solution
Someone on my team found another solution to this problem - you can pass
key={items.length}to this component which will causes it to remount on render when the items.length changes.it works, thank you