diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs index 37454c08f895..da16534f92f8 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs @@ -140,6 +140,7 @@ Task PopModalPlatformAsync(bool animated) } else { + dialogFragment.Dismiss(); source.TrySetResult(modal); } diff --git a/src/Controls/tests/DeviceTests/Elements/Modal/ModalTests.cs b/src/Controls/tests/DeviceTests/Elements/Modal/ModalTests.cs index 7dfb54bc27e6..77fef4c65aec 100644 --- a/src/Controls/tests/DeviceTests/Elements/Modal/ModalTests.cs +++ b/src/Controls/tests/DeviceTests/Elements/Modal/ModalTests.cs @@ -532,6 +532,29 @@ await CreateHandlerAndAddToWindow(rootPage, Assert.Empty(rootPage.GetCurrentPage().Navigation.ModalStack); } + [Fact] + public async Task DismissModalIfNotAnimated() + { + SetupBuilder(); + var page = new ContentPage(); + + var modalPage = new ContentPage() + { + Content = new Label() { Text = "Page with no animation" } + }; + + var window = new Window(page); + + await CreateHandlerAndAddToWindow(window, async () => + { + await page.Navigation.PushModalAsync(modalPage, false); + await OnLoadedAsync(modalPage); + await modalPage.Navigation.PopModalAsync(false); + await OnUnloadedAsync(modalPage); + + }); + } + class PageTypes : IEnumerable { public IEnumerator GetEnumerator()