首页 文章

菜单已创建,但在导航后消失

提问于
浏览
0

我在Xamarin Android应用程序中创建了菜单 . 它显示在第一页上,但在PushAsync之后它消失了 . 返回第一页后,它不再显示 . 这是一个代码:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, IOnMenuItemClickListener
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);

        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new App());

        var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
        toolbar.InflateMenu(Resource.Menu.action_menu);
        toolbar.SetOnMenuItemClickListener(this);
    }

    public bool OnMenuItemClick(IMenuItem item)
    {
        ...
        return true;
    }
}
    public App()
    {
        InitializeComponent();

        MainPage = new NavigationPage(new MainPage());
    }

public partial class MainPage : ContentPage
{
    ...
    private async void OnSecondPageClicked()
    {
        await Navigation.PushAsync(new SecondPage());
    }
}

文件action_menu.xml:

<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/item1"
        android:title="new_game"
        android:showAsAction="always"/>
    <item android:id="@+id/item2"
        android:title="help"
        android:showAsAction="always"/>
</menu>

1 回答

  • 1

    你有一个Xamarin.Android应用程序和一个Xamarin.Forms应用程序的混合物 . 这个答案假定你想要一个表单应用程序 . 您应该从OnCreate中删除以下行

    var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
    toolbar.InflateMenu(Resource.Menu.action_menu);
    toolbar.SetOnMenuItemClickListener(this);
    

    并将这些行添加到MainPage的构造函数中

    this.ToolbarItems.Add(new ToolbarItem("New Game", "", () => { }));
    this.ToolbarItems.Add(new ToolbarItem("Help", "", () => { }));
    

    如果可行,您应该将MainPage和App移动到Cross Platform项目中 .

相关问题