2012-08-23 41 views
9

Khi sử dụng ActionBar trong Android, bạn làm mới menu tùy chọn như thế nào? Tôi đã cố gắng ẩn và hiển thị thanh, cùng với việc tạo một phiên bản mới với "getSupportActionBar()"Android ActionBar Tùy chọn tạo lại Menu

Tôi đang cố triển khai nút Đăng xuất/Đăng xuất sẽ thay đổi động dựa trên trạng thái của người dùng.

Đây là phương pháp onCreateOptionsMenu tôi

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (loggedIn) 
     menu.add(0, MENU2, 0, "Logout").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    else 
     menu.add(0, MENU2, 0, "Login").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    menu.add(0, MENU1, 0, "Home").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    return super.onCreateOptionsMenu(menu); 
} 

Cảm ơn!

+0

thể trùng lặp của [Refreshing Action Bar trong Android 3.0] (http://stackoverflow.com/ question/6602534/refresh-the-action-bar-in-android-3-0) – CommonsWare

+0

Câu hỏi chung - Quy tắc Stackoverflow để chọn câu trả lời hay nhất khi hai câu trả lời giống nhau và trả lời trong cùng khoảng thời gian với nhau như tốt? –

+0

Câu trả lời hay hơn (chi tiết hơn, mẫu mã, liên kết, v.v.) vượt qua các câu trả lời nhanh hơn. Đối với câu trả lời của công đức tương đương trong cả hai lĩnh vực ... lật một đồng xu? – CommonsWare

Trả lời

11

Trong cuộc gọi FragmentActivity bạn invalidateOptionsMenu()

Đây cũng là một phương pháp nào, vì vậy nếu bạn muốn làm mới nó từ một cuộc gọi đoạn getActivity().invalidateOptionsMenu()

BTW, nếu bạn đang sử dụng SherlockActionBar bạn sẽ cần phải gọi getSherlockActivity().invalidateOptionsMenu() từ đoạn, hoặc bạn sẽ nhận được một ngoại lệ.

7
invalidateOptionsMenu() 

đòi hỏi mức API 11 ...

để sử dụng API thấp:

supportInvalidateOptionsMenu() 
Các vấn đề liên quan