'recognize back-button on dialog-service

I'm using the Prism- dialog-service to show a dialog with a yes- and a no-button. This works fine. The user makes the choice and the calling page gets the dialogresult.

But it is also possible for the user to press the back-button if the dialog is present and the dialog disappears without any result to the calling page.

I know that I can override the OnBackButtonPressed-event in the MainActivity but this affects everywhere in my app.

It's important for me, that I can handle this behavior (suspend Back-Button or not) individually for each Dialog.

Therefore I'm looking for an event which will be fired if the back-button is pressed while the dialog is shown. Similary with the OnBackButtonPressed-Event on a ContentPage.



Solution 1:[1]

forms project - pages:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" . . IsBusy="{Binding IsBusy}">


android project - MainActivity:

    public override void OnBackPressed()
    {
        var allNotBusy = true;
        foreach (var fragment in this.GetFragmentManager().Fragments)
        {
            var contentPage = fragment.GetType().GetProperty("Page")?.GetValue(fragment) as ContentPage;

            if (contentPage.IsBusy)
            {
                allNotBusy = false;
            }
        }

        if (allNotBusy)
        {
            base.OnBackPressed();
        }
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1