diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index a427a1ff1..47e87748d 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -9,6 +9,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [`Con ### Bug Fixes * Fixed an issue where symbols flickered when zooming out. [#16](https://github.com/maplibre/maplibre-gl-native/issues/16) +* Fixes crash caused by NullPointerException MapKeyListener [#464](https://github.com/mapbox/mapbox-gl-native-android/issues/464), cherry picked from [#466](https://github.com/mapbox/mapbox-gl-native-android/pull/466) * Fixed an issue where GPS puck keeps previous value when enabled. [#462]https://github.com/mapbox/mapbox-gl-native-android/issues/462, cherry picked from [#470](https://github.com/mapbox/mapbox-gl-native-android/pull/470) ### Other diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index de33e8fcf..85c736605 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -525,21 +525,33 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { @Override public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { + if (!isKeyDetectorInitialized()) { + return super.onKeyDown(keyCode, event); + } return mapKeyListener.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { + if (!isKeyDetectorInitialized()) { + return super.onKeyLongPress(keyCode, event); + } return mapKeyListener.onKeyLongPress(keyCode, event) || super.onKeyLongPress(keyCode, event); } @Override public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) { + if (!isKeyDetectorInitialized()) { + return super.onKeyUp(keyCode, event); + } return mapKeyListener.onKeyUp(keyCode, event) || super.onKeyUp(keyCode, event); } @Override public boolean onTrackballEvent(@NonNull MotionEvent event) { + if (!isKeyDetectorInitialized()) { + return super.onTrackballEvent(event); + } return mapKeyListener.onTrackballEvent(event) || super.onTrackballEvent(event); } @@ -1121,6 +1133,10 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { return mapGestureDetector != null; } + private boolean isKeyDetectorInitialized() { + return mapKeyListener != null; + } + @Nullable MapboxMap getMapboxMap() { return mapboxMap;