2011-10-05 16 views
27

Rõ ràng là Activities - phương pháp này đang được gọi ngay trước khi menu được hiển thị. Nhưng còn khoảng ActionBar khi nó là luôn hiển thị? Làm thế nào để kích hoạt nó được gọi để cập nhật động menuItems?Phương thức onPrepareOptionsMenu() thường được gọi cho ActionBar khi nào và như thế nào?

+0

Bạn có thể sử dụng phương thức onPrepareOptionsMenu() để kích hoạt/vô hiệu hóa các mục hoặc tự động sửa đổi nội dung. – Nepster

Trả lời

53

Sử dụng invalidateOptionsMenu() để kích hoạt phương thức onPrepareOptionMenu() theo đề xuất của tài liệu.

On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.

+0

Nếu bạn đang sử dụng ActionBarSherlock, bạn có thể sử dụng phương thức hoạt động: supportInvalidateOptionsMenu(); Nếu bạn đang ở trong Phân đoạn, hãy gọi hàm getActivity(). SupportInvalidateOptionsMenu(); thay thế – edrian

0

Lưu ý nếu phiên bản phút sdk của bạn là ít hơn so với Honeycomb (aka Android 3.0 hay còn gọi là mức api 11), và bạn đang sử dụng ActionBarActivity bạn có thể gọi supportInvalidateOptionsMenu() đó là phiên bản hỗ trợ thư viện của invalidateOptionsMenu ().

Nếu menu của bạn thay đổi dựa trên ý định đến onCreate(), bạn chỉ có thể thực hiện cập nhật trong onPrepareOptionMenu(), nếu bạn tự động thay đổi menu sau trong vòng đời hoạt động, bạn sẽ phải gọi invalideOptionsMenu, hoặc supportInvalidateOptionsMenu tùy thuộc vào phiên bản sdk tối thiểu và mục tiêu của bạn.