2012-04-25 36 views

Trả lời

31

Bạn có thể tạo các trình đơn trong mã như thế này:

/*************************************/ 
/* Create the actionbar options menu */ 
/*************************************/ 
@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    menu.add(0, 0, 0, "History").setIcon(R.drawable.ic_menu_recent_history) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 1, 0, "Settings").setIcon(R.drawable.ic_menu_manage) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    return true; 
} 

Bên trong séc cho một boolean.

Bạn sẽ cần gọi supportInvalidateOptionsMenu() để tạo lại menu.

+0

Cảm ơn. Hoạt động tuyệt vời !! – hdoria

7

Bạn có thể duy trì một lá cờ xác định nếu bạn cần để hiển thị nút của bạn

boolean hasRss = false; 

sau đó, ghi đè lên các phương pháp onCreateOptionsMenu (Menu menu) và kiểm tra xem nếu hasRss là đúng hay sai. Nếu đúng, hãy thêm nút của bạn để làm bất cứ điều gì. Sau đó, bạn có thể thêm các nút bình thường của bạn, bạn muốn luôn luôn xuất hiện bất kể nếu bạn có RSS hoặc không

@Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     if (hasRss) 
     { 
      menu.add(Menu.NONE, 0, Menu.NONE, "View RSS").setIcon(R.drawable.ic_menu_view) 
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
     } 

     menu.add(Menu.NONE, 1, Menu.NONE, "Normal button that is always there").setIcon(R.drawable.ic_menu_button) 
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    } 

bạn sẽ phải thiết lập giá trị hasRss của bạn = true bất cứ khi nào bạn lấy giá trị của bạn và gọi invalidateOptionsMenu(); để tải lại hành động các mục menu trên thanh

+0

Cảm ơn. Hoạt động tuyệt vời !! – hdoria

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