skip to Main Content

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()'.    

2

Answers


  1. 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?

    Login or Signup to reply.
  2. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search