Niilo Poutanen
Niilo Poutanen

Reputation: 45

Xamarin.Android predictive back gesture (OnBackPressed deprecated)

In Android 13 the OnBackPressed method has become deprecated. How can i implement this code in Xamarin.Android?

@Override
void onCreate() {
  if (BuildCompat.isAtLeastT()) {
    getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
        OnBackInvokedDispatcher.PRIORITY_DEFAULT,
        () -> {
          /**
          * Code here
          */
        }
    );
  }
}

The code above is the Java example from the official android dev website, but i can't find the replacements for this in Xamarin. Can someone translate this to C#?

This is what Visual studio suggests, but it doesn't help at all.

Warning CS0672:Member 'MainActivity.OnBackPressed()' overrides obsolete member 'Activity.OnBackPressed()'. Add the Obsolete attribute to 'MainActivity.OnBackPressed()'.    

Upvotes: 1

Views: 2228

Answers (2)

user2153142
user2153142

Reputation: 794

There are a series of Xamarin.Android tutorials using the NavigationComponent at https://github.com/gmck. As you progress through the projects, you will see the introduction of OnBackPressedCallback which is used extensively in the later projects.

Upvotes: 0

Cfun
Cfun

Reputation: 9701

You can try to use OnBackPressedDispatcher.AddCallback()

MainAcivity.cs

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        if (BuildCompat.IsAtLeastT)
        {
        OnBackPressedDispatcher.AddCallback(new CustomOnBackPressed(true));
        }

CustomOnBackPressed.cs

public class CustomOnBackPressed : OnBackPressedCallback
{
    public OnBack(bool enabled) : base(enabled)
    {
    }

    public override void HandleOnBackPressed()
    {
        //code that handles back button pressed
    }
}

Related question

onBackPressed() deprecated, What is the alternative?

Upvotes: 1

Related Questions