【问题标题】:OnCreateOptionsMenu doesn't get called on Android 7.0在 Android 7.0 上不会调用 OnCreateOptionsMenu
【发布时间】:2017-09-28 23:43:47
【问题描述】:

正如标题中提到的,在我将系统更新到 Android 7.0 后,不会调用 OnCreateOptionsMenu 方法。

在更新之前,我使用的是 Android 6.0,它运行时没有任何问题。 如果我在另一部 6.0 的手机上对其进行测试,它仍然可以工作(相同的代码)。

此方法在 Android 7.0 上是否有问题或我的代码有问题?

我在 MainActivity.cs 中设置 toolbar 的部分

[Activity(Label = "App", Icon = "@drawable/icon", MainLauncher = true, Theme = "@style/Theme.AppCompat.Light.NoActionBar",ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait)]
public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
         base.OnCreate(bundle);
         SetContentView(Resource.Layout.Main);

         var toolbar = FindViewById<Android.Widget.Toolbar>(Resource.Id.toolbar);
         toolbar.SetTitleTextColor(Color.White);
         SetActionBar(toolbar);
    }

    public override bool OnCreateOptionsMenu(IMenu menu)
    {
        MenuInflater.Inflate(Resource.Menu.top_menu_start, menu);
        return base.OnCreateOptionsMenu(menu);
    }
}

Main.axml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#1D1D1D"
        android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar" />
</RelativeLayout>

top_menu_start

<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item
       android:id="@+id/start_listview"
       android:icon="@drawable/icon_posts_list"
       android:showAsAction="ifRoom"
       android:title="startListview" />
  <item
       android:id="@+id/start_pager"
       android:icon="@drawable/icon_posts_kacheln"
       android:showAsAction="ifRoom"
       android:title="startPager" />
  <item
       android:id="@+id/doSomething"
       android:icon="@drawable/icon"
       android:showAsAction="ifRoom"
       android:title="doSomething" />
</menu>

【问题讨论】:

    标签: c# android xamarin toolbar android-7.0-nougat


    【解决方案1】:

    由于您使用的是AppCompatActivity,因此您应该使用Android.Support.V7.Widget.Toolbar 而不是Android.Widget.Toobar 并调用SetSupportActionBar 而不是SetActionBar。现在您的OnCreateOptionsMenu 将被调用。

    OnCreate 覆盖:

    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.Main);
    var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
    toolbar.SetTitleTextColor(Color.White);
    SetSupportActionBar(toolbar);
    

    Main.axml 更新:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#1D1D1D"        android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar">
        </android.support.v7.widget.Toolbar>
    

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多