From d4bf7a73da6f7f3236e1748ae74024e421cf6241 Mon Sep 17 00:00:00 2001 From: Roman Tsisyk Date: Wed, 1 Mar 2023 11:26:44 +0200 Subject: [PATCH] [android] Fix a crash on rotation when location dialog is displayed Closes #4570 Signed-off-by: Roman Tsisyk --- android/src/app/organicmaps/MwmActivity.java | 1 + .../app/organicmaps/location/LocationHelper.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/android/src/app/organicmaps/MwmActivity.java b/android/src/app/organicmaps/MwmActivity.java index 3892a75f71..4832850435 100644 --- a/android/src/app/organicmaps/MwmActivity.java +++ b/android/src/app/organicmaps/MwmActivity.java @@ -1028,6 +1028,7 @@ public class MwmActivity extends BaseMwmFragmentActivity if (mOnmapDownloader != null) mOnmapDownloader.onPause(); mNavigationController.onActivityPaused(this); + LocationHelper.INSTANCE.closeLocationDialog(); super.onPause(); } diff --git a/android/src/app/organicmaps/location/LocationHelper.java b/android/src/app/organicmaps/location/LocationHelper.java index 5bb18285fc..5de1bbbd28 100644 --- a/android/src/app/organicmaps/location/LocationHelper.java +++ b/android/src/app/organicmaps/location/LocationHelper.java @@ -161,6 +161,13 @@ public enum LocationHelper implements Initializable, AppBackgroundTrack } } + public void closeLocationDialog() + { + if (mErrorDialog != null && mErrorDialog.isShowing()) + mErrorDialog.dismiss(); + mErrorDialog = null; + } + void notifyCompassUpdated(double north) { mSavedNorth = north; @@ -179,8 +186,7 @@ public enum LocationHelper implements Initializable, AppBackgroundTrack if (mSavedLocation == null) throw new IllegalStateException("No saved location"); - if (mErrorDialog != null && mErrorDialog.isShowing()) - mErrorDialog.dismiss(); + closeLocationDialog(); for (LocationListener listener : mListeners) listener.onLocationUpdated(mSavedLocation); @@ -250,8 +256,7 @@ public enum LocationHelper implements Initializable, AppBackgroundTrack } // Cancel our dialog in favor of system dialog. - if (mErrorDialog != null && mErrorDialog.isShowing()) - mErrorDialog.dismiss(); + closeLocationDialog(); // Launch system permission resolution dialog. IntentSenderRequest intentSenderRequest = new IntentSenderRequest.Builder(pendingIntent.getIntentSender())