Tôi đã tìm kiếm rất nhiều trên invalidateOptionsMenu()
và tôi biết nó làm gì. Nhưng tôi không thể nghĩ ra bất kỳ ví dụ thực tế nào về cuộc sống mà phương pháp này có thể hữu ích. Ví dụ:Android - Sử dụng đúng invalidateOptionsMenu()
Ví dụ: giả sử chúng tôi muốn thêm MenuItem
mới vào ActionBar
, chúng tôi chỉ cần lấy Menu từ onCreateOptionsMenu(Menu menu)
và sử dụng nó trong bất kỳ thao tác nào của nút.
Bây giờ, câu hỏi thực sự của tôi là chỉ theo cách cách sử dụng 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);
}
Nhấp vào nút và menu khác xuất hiện. Nhấp lại vào nút và menu trước xuất hiện.
P.S. Xin lỗi về cú pháp C#.
minSdkVersion của bạn là gì? – Xcihnegn
Nó hoạt động trên 11+. Tôi là 15. –
Vì vậy, nó nên gọi OnCreateOptionsMenu(), bạn có thể thử chạy gỡ lỗi để đi qua các mã số – Xcihnegn