【发布时间】:2015-03-15 01:30:17
【问题描述】:
我在invalidateOptionsMenu() 上搜索了很多,我知道它的作用。但我想不出任何现实生活中这种方法有用的例子。
我的意思是,例如,假设我们想在ActionBar 中添加一个新的MenuItem,我们可以简单地从onCreateOptionsMenu(Menu menu) 获取菜单并在任何按钮的操作中使用它。
现在我真正的问题是,是否遵循 only 使用invalidateOptionsMenu()的方式?
bool _OtherMenu;
protected override void OnCreate (Bundle bundle)
{
_OtherMenu = false;
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button> (Resource.Id.myButton);
button.Click += delegate
{
if(_OtherMenu)
_OtherMenu = false;
else
_OtherMenu = true;
InvalidateOptionsMenu ();
};
}
public override bool OnCreateOptionsMenu (IMenu menu)
{
var inflater = this.SupportMenuInflater;
if(_OtherMenu)
inflater.Inflate (Resource.Menu.another_menu, menu);
else
inflater.Inflate (Resource.Menu.main_activity_menu, menu);
return base.OnCreateOptionsMenu (menu);
}
单击该按钮会出现一个不同的菜单。再次单击该按钮,将出现上一个菜单。
附:对不起 C# 语法。
【问题讨论】:
-
你的 minSdkVersion 是多少?
-
它适用于 11+。我的是 15 岁。
-
所以它应该调用OnCreateOptionsMenu(),你可以尝试运行调试来通过代码
-
@Xingchen 先生,我知道这个功能是做什么的。它正在做应该做的事情。我只是不明白这个功能的意义。它有什么用处?
-
此功能旨在更新您的操作栏菜单。就我而言,每次我的菜单项文本值发生更改时,我都会调用 invalidateOptionsMenu(),然后调用 onPrepareOptionsMenu() 来更改项值
标签: android android-actionbar xamarin android-menu android-optionsmenu