Я искал много на invalidateOptionsMenu()
, и я знаю, что он делает. Но я не могу придумать какой-либо реальной жизни, где этот метод может быть полезен.Android - Правильное использование invalidateOptionsMenu()
Я имею в виду, к примеру, предположим, что мы хотим, чтобы добавить новый MenuItem
к нашему ActionBar
, мы можем просто получить меню от onCreateOptionsMenu(Menu menu)
и использовать его в действии любой кнопки.
Теперь, на мой вопрос, следует только 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);
}
Нажмите кнопку и появится другое меню. Нажмите кнопку еще раз, и появится предыдущее меню.
P.S. Извините за синтаксис C#.
Какой у вас minSdkVersion? – Xcihnegn
Работает на 11+. Mine is 15. –
Поэтому он должен вызывать OnCreateOptionsMenu(), вы можете попробовать запустить отладку, чтобы пройти через коды – Xcihnegn