C# 更改菜单项时获取systemNullReference异常';s标题-安卓

C# 更改菜单项时获取systemNullReference异常';s标题-安卓,c#,android,visual-studio,xamarin,menu,C#,Android,Visual Studio,Xamarin,Menu,我正在使用c#开发一个android应用程序,我的问题是,当我在按钮事件之外更改菜单项的标题时,在Oncreate方法中,我得到了一个SystemNullReference例外,但我能够在按钮单击事件内部执行,而不会得到例外。我想做的是在Oncreate方法中更改项目的标题,以便在应用程序启动时直接更改项目标题。到目前为止,我所拥有的: private IMenu menu; public override bool OnCreateOptionsMenu(IMenu menu)

我正在使用c#开发一个android应用程序,我的问题是,当我在按钮事件之外更改菜单项的标题时,在
Oncreate
方法中,我得到了一个
SystemNullReference例外
,但我能够在按钮单击事件内部执行,而不会得到例外。我想做的是在
Oncreate方法中更改项目的标题
,以便在应用程序启动时直接更改项目标题。到目前为止,我所拥有的:

private IMenu menu;
    public override bool OnCreateOptionsMenu(IMenu menu)
    {
        this.menu = menu;
        MenuInflater.Inflate(Resource.Menu.menu, menu);
        return base.OnPrepareOptionsMenu(menu);
    }
protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);
        Button button = FindViewById<Button>(Resource.Id.button1);
        button.Click += delegate
        {
            IMenuItem about = menu.FindItem(Resource.Id.About); // Everything is working on the button click
            about.SetTitle("About);
         };
        if (selected == "English") // selected is a string value saved in Shared Preference
        {
            IMenuItem about = menu.FindItem(Resource.Id.About); // here where I am getting the SystemNullReference excepetion
            about.SetTitle("About);
         }
      }
private菜单;
公共覆盖布尔onCreateOptions菜单(IMenu菜单)
{
this.menu=菜单;
菜单充气器。充气(Resource.Menu.Menu,Menu);
返回base.onPrepareOptions菜单(菜单);
}
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button Button=FindViewById(Resource.Id.button1);
按钮。单击+=委派
{
IMenuItem about=menu.FindItem(Resource.Id.about);//单击按钮时一切正常
about.SetTitle(“about”);
};
if(selected==“English”)//selected是保存在共享首选项中的字符串值
{
IMenuItem about=menu.FindItem(Resource.Id.about);//这里是获取SystemNullReference异常的地方
about.SetTitle(“about”);
}
}
为什么我会有这个异常,以及如何解决这个问题?
提前感谢..

移动这部分代码:

 if (selected == "English") // selected is a string value saved in Shared Preference
    {
        IMenuItem about = menu.FindItem(Resource.Id.About); // here where I am getting the SystemNullReference excepetion
        about.SetTitle("About);
     }
进入
oncreateoptions菜单的末尾,然后返回
语句


您应该这样做,因为您初始化了
private IMenu菜单oncreateoptions菜单
中的code>值,在
OnCreate()
之后称为,您使用的是
专用IMenu菜单OnCreate
中调用code>,但到目前为止它还没有初始化。

对android的了解还不够,但我猜
oncreateoptions菜单
是在
OnCreate
之后调用的,所以在
OnCreate
中,
菜单
仍然是
null
。是否可以尝试在
oncreateoptions菜单中更改标题,而不是在
OnCreate
中更改标题?它在按钮处理程序中工作,因为这仅在单击按钮时执行,而不是在执行
OnCreate
时直接执行。