在Fragment Xamarin Android上替换Second Toolbar

时间:2018-08-07 22:30:15

标签: android-layout android-fragments xamarin.android android-toolbar

我正在尝试制作一个具有两个活动工具栏的android应用。我制作了两个工具栏,以便可以向每个片段活动添加操作。但是我遇到了麻烦。

好吧,当另一个片段显示出来时,我可以用以下代码替换顶部的工具栏:

 public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
    {
        //SearchMenu
        inflater.Inflate(Resource.Menu.nav_search, menu);
        var searchItem = menu.FindItem(Resource.Id.action_search);
        var provider = MenuItemCompat.GetActionView(searchItem);
        mSearchView = provider.JavaCast<Android.Support.V7.Widget.SearchView>();
        mSearchView.QueryTextSubmit += (sender, args) =>
        {
            Toast.MakeText(this.Activity, "You searched: " + args.Query, ToastLength.Short).Show();
        };
    }

它运行完美。然后,我尝试在第二个工具栏上添加选项菜单,并像这样结束:

public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
    {
        //SearchMenu
        inflater.Inflate(Resource.Menu.nav_search, menu);
        var searchItem = menu.FindItem(Resource.Id.action_search);
        var provider = MenuItemCompat.GetActionView(searchItem);
        mSearchView = provider.JavaCast<Android.Support.V7.Widget.SearchView>();
        mSearchView.QueryTextSubmit += (sender, args) =>
        {
            Toast.MakeText(this.Activity, "You searched: " + args.Query, ToastLength.Short).Show();
        };

        //ActionMenu
        var mBottomToolbar = this.Activity.FindViewById<Android.Widget.Toolbar>(Resource.Id.secondToolbar);
        mBottomToolbar.InflateMenu(Resource.Menu.nav_manageLocation);
        mBottomToolbar.MenuItemClick += (sender, e) =>
        {

            switch (e.Item.ToString())
            {
                case "Add":
                    ReplaceFragment(new LocationAddFragment(), "addlocation");
                    break;
            }

            base.OnCreateOptionsMenu(menu, inflater);

        };
    }

nav_manageLocation添加到第二个工具栏。但是它不会取代旧的第二个工具栏。所以现在我在第二个工具栏中有两个菜单,旧菜单和新菜单。

有没有办法让我只能在第二个工具栏上显示新菜单? 谢谢。

0 个答案:

没有答案