2010-09-09 30 views
8

Vấn đề là các phương pháp sau đây được gọi một lần khi nút Menu được nhấn:Cách tạo menu tùy chọn động?

public boolean onCreateOptionsMenu(Menu menu) 

Làm thế nào tôi có thể tạo menu sau một thời gian để thay đổi một số tùy chọn, vô hiệu hóa một số tùy chọn, vv?

Trả lời

22

Override onPrepareOptionsMenu (Menu menu) này

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     MenuItem item = menu.findItem(R.id.refresh); 

     if (item != null) { 
     item.setVisible (shouldIShowThisItem) 
     } 
} 
+0

Điều đó hiệu quả. Để bất cứ ai khác làm điều này, trước khi bạn có thể thay đổi các mục trình đơn trong onPrepareOptionsMenu bạn cần phải làm một menu.clear() để xóa các công cụ hiện tại. – pcm2a

+0

Bạn không cần xóa menu nếu bạn chỉ thay đổi các mục hiện có. Nếu bạn đang tạo lại hoặc tạo lại một menu hoàn toàn mới, bạn có thể muốn. – adamp

+0

Tôi không thể thay đổi các mục menu mà không xóa và tạo lại nó. Tôi đã thử nhận một mục riêng lẻ với menu.getPositon() nhưng khi tôi thay đổi Tiêu đề, các thay đổi không được phản ánh trong menu. – pcm2a

0
invalidateOptionsMenu(); 

nếu bạn muốn đẩy menu thay đổi sử dụng này.

Các vấn đề liên quan