2012-09-14 29 views
9

Có cách nào để tự động tắt, ẩn, thêm/xóa các mục menu trong ActionBar không? Ví dụ: một hành động bị vô hiệu hóa cho đến khi người dùng điền vào một số điện thoại hợp lệ trong một hoạt động.Kiểm soát động các mục tác vụ/hành động trong ActionBar

Tôi không tìm thấy bất kỳ phương pháp hữu ích nào trong ActionBar API, cách duy nhất có vẻ là sử dụng Chế độ xem tùy chỉnh trong ActionBar.

Trả lời

20

Để nói ActionBar để làm mới các mục menu của nó: invalidateOptionsMenu()

sau đó để bật/tắt Menu Items:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem item= menu.findItem(R.id.men_1); 
    //depending on your conditions, either enable/disable 
    item.setEnabled(false); 
    super.onPrepareOptionsMenu(menu); 
    return true; 
} 

và để ẩn thanh hành động mà bạn có:

getActionBar().hide(); 
+1

'onPrepareOptionsMenu' phải trả lại' giá trị boolean', bạn phải trả về true cho menu được hiển thị; nếu bạn trả về false nó sẽ không được hiển thị. –

+7

Nếu bạn đang sử dụng thư viện hỗ trợ và 'ActionBarActivity', bạn sẽ cần sử dụng [' supportInvalidateOptionsMenu() '] (http://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html# supportInvalidateOptionsMenu% 28% 29) –

0

Một tùy chọn: có một trường trong Activity lưu Menu. . Bằng cách này nó có thể gọi getMenuInflater() thổi phồng() và menu.clear() từ bất cứ nơi nào bạn muốn trong hoạt động này

Vì vậy, nó trông giống như sau:

class MyActivity extends ActionBarActivity { 

    Menu actionBar; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     actionBar = menu; 
     return true; 
    } 

    //Possible usage 
    void showActionBar1() { 
     getMenuInflater().inflate(R.menu.menu_1, actionBar); 
     actionBar.findItem(R.id.menu_1_btn_1).setOnMenuItemClickListener(); 
    } 

    void showActionBar2() { 
     getMenuInflater().inflate(R.menu.menu_2, actionBar); 
     ... 
    } 

    void clearActionBar() { 
     if (actionBar != null) actionBar.clear(); 
    } 
Các vấn đề liên quan