Xamarin.Android で ActionBar に戻るボタンを表示する

Xamarin.Android で開発している、画面遷移をフラグメントの入れ替えで実装しているアプリで、ActionBar の左上に←(戻る)ボタンを表示できたので方法をメモしておく。

using System;
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Views;

namespace HelloAndroid
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);

            if (savedInstanceState == null)
            {
                SupportFragmentManager.BeginTransaction()
                    .Replace(Resource.Id.container, new FirstFragment())
                    .Commit();
            }
            SupportFragmentManager.BackStackChanged += HandleBackStackChanged;
        }

        // BackStack が変わったタイミングで←ボタンの表示・非表示を切り替える
        void HandleBackStackChanged(object sender, EventArgs e)
        {
            var showUpButton = SupportFragmentManager.BackStackEntryCount > 0;
            SupportActionBar?.SetDisplayHomeAsUpEnabled(showUpButton);
            SupportActionBar?.SetHomeButtonEnabled(showUpButton);
        }

        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            // ←ボタンがタップされたら BackStack をポップして 1 つ前の Fragment に戻る
            if (item.ItemId == Android.Resource.Id.Home)
            {
                SupportFragmentManager.PopBackStack();
                return true;
            }
            return base.OnOptionsItemSelected(item);
        }
    }
}

これで、←ボタンをタップすると1つ前の画面に戻るし、Android 端末の Home ボタンを押した場合も前の画面に戻る。 これ以上戻れないときは←ボタンを表示しない。