C# 更改菜单项时获取systemNullReference异常';s标题-安卓
我正在使用c#开发一个android应用程序,我的问题是,当我在按钮事件之外更改菜单项的标题时,在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)
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
时直接执行。