From 5d14e03c8bace638dd32679f92526b5659629889 Mon Sep 17 00:00:00 2001 From: Roman Tsisyk Date: Wed, 1 Mar 2023 11:15:38 +0200 Subject: [PATCH] [android] Fix "Can not perform this action after onSaveInstanceState" Follow up 0431f1dd09bc8fa48a6caa61feddd45319e57307 Fixes #4549 Signed-off-by: Roman Tsisyk --- .../widget/placepage/PlacePageController.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/android/src/app/organicmaps/widget/placepage/PlacePageController.java b/android/src/app/organicmaps/widget/placepage/PlacePageController.java index 4f557f4c5a..504e5a61ab 100644 --- a/android/src/app/organicmaps/widget/placepage/PlacePageController.java +++ b/android/src/app/organicmaps/widget/placepage/PlacePageController.java @@ -17,6 +17,7 @@ import androidx.core.widget.NestedScrollViewClickFixed; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.interpolator.view.animation.FastOutSlowInInterpolator; +import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import app.organicmaps.Framework; @@ -83,9 +84,15 @@ public class PlacePageController implements Initializable, @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { + final Lifecycle.State state = mMwmActivity.getLifecycle().getCurrentState(); + if (!state.isAtLeast(Lifecycle.State.RESUMED)) + { + Logger.e(TAG, "Called in the wrong activity state=" + state); + return; + } + Logger.d(TAG, "State change, new = " + PlacePageUtils.toString(newState)); - if (PlacePageUtils.isSettlingState(newState) || PlacePageUtils.isDraggingState(newState) || - mMwmActivity.isFinishing() || mMwmActivity.isDestroyed()) + if (PlacePageUtils.isSettlingState(newState) || PlacePageUtils.isDraggingState(newState)) return; PlacePageUtils.moveViewportUp(mPlacePage, mViewportMinHeight); @@ -97,8 +104,12 @@ public class PlacePageController implements Initializable, @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { - if (mMwmActivity.isFinishing() || mMwmActivity.isDestroyed()) + final Lifecycle.State state = mMwmActivity.getLifecycle().getCurrentState(); + if (!state.isAtLeast(Lifecycle.State.RESUMED)) + { + Logger.e(TAG, "Called in the wrong activity state=" + state); return; + } stopCustomPeekHeightAnimation(); mDistanceToTop = bottomSheet.getTop(); mSlideListener.onPlacePageSlide(mDistanceToTop);