Xamarin.Android API 24+ (Android 7+) 中未调用 OnOptionsItemSelected

OnOptionsItemSelected is not called in Xamarin.Android API 24+ (Android 7+)

我正在使用 Xamarin.Android 开发一个应用程序,该应用程序在 API 23 (Android 6.0) 之前运行良好:

这是我的 OnCreate 事件:

protected override void OnCreate(Bundle bundle)
{
    SetTheme(Resource.Style.MyCustomThemeCompat);
    base.OnCreate(bundle);

    base.SetActionBar(FindViewById<Toolbar>(Resource.Id.toolbarMain));
    ActionBar.Title = Title;

    ActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu_white_24dp);

    ActionBar.SetDisplayHomeAsUpEnabled(true);
}

这是我的事件 OnOptionsItemSelected,自 API 24+ (Android 7+):

以来从未调用过
public override bool OnOptionsItemSelected(IMenuItem item)
{
    switch (item.ItemId)
    {
        case Android.Resource.Id.Home:
            if (MDrawerLayout.IsDrawerOpen(GravityCompat.Start))
            {
                MDrawerLayout.CloseDrawers();
            }
            else
            {
                MDrawerLayout.OpenDrawer(GravityCompat.Start);
            }

            return true;
        default:
            return false;
    }
}

我的自定义样式:

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
  <style name="MyCustomThemeCompat" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:colorPrimary">#01579B</item>
    <item name="android:colorPrimaryDark">#01579B</item>
    <item name="android:colorButtonNormal">#0277BD</item>
    <item name="android:textColorHint">#FAFAFA</item>
    <item name="android:textColor">#BDBDBD</item>
    <item name="android:textColorPrimary">#FFFFFF</item>
    <item name="android:windowBackground">#424242</item>
    <item name="android:elevation">4dp</item>
  </style>
</resources>

我没有找到我应该在我的代码中做的任何更改的任何示例或解释。大多数示例使用一些菜单,但我不需要任何菜单。另外,我正在使用 AppCompatActivityToolbar.

现在,我只有一个 Hamburger 菜单来显示 NavigationDrawer。

工具栏:

导航抽屉已打开:

这里是完整代码的一个小例子:

https://github.com/FANMixco/NavigationDrawerError

有人体验过吗?谢谢你的建议。

首先,将您的 toolbarMain.xmlAndroid.Widget.Toolbar 修改为 Support.V7.Widget.Toolbar :

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbarMain"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/actionBarSize"
    android:background="?android:attr/colorPrimary"/>

其次,在你的 MainActivity :

//base.SetActionBar(FindViewById<Toolbar>(Resource.Id.toolbarMain));
//ActionBar.Title = "Típicos Salvadoreños";
        
//ActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu_white_24dp);
//ActionBar.SetDisplayHomeAsUpEnabled(true);

MDrawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);

var mToolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbarMain);
SetSupportActionBar(mToolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu_white_24dp);
SupportActionBar.Title = "Típicos Salvadoreños";

然后,当您单击汉堡包菜单时,将调用 OnOptionsItemSelected

Effect.

更新:

您可以阅读 ActionBarDrawerToggle 文档,注意那里的两个构造函数。 Toolbar 类型是 android.support.v7.widget.Toolbar