2011-06-21 7 views
9

nó khá dễ dàng để vô hiệu hóa một mục trình đơn trong XML:Honeycomb Android 3.0: Làm thế nào để bật/tắt các mục menu trong thanh tác vụ?

<item android:id="@+id/men_1" 
    android:title="@string/men_1" 
    android:showAsAction="ifRoom|withText" 
    android:icon="@drawable/ic_menu_1" 
    android:enabled="false"/> 

Nó cũng khá dễ dàng để thay đổi nó thông qua mã trên một ứng dụng < 3.0:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) 
{ 
    super.onPrepareOptionsMenu(menu); 

    MenuItem item = menu.findItem(R.id.men_1); 
    item.setEnabled(false); 

    return true; 
} 

Nhưng làm thế nào tôi sẽ làm điều đó trên Android 3.x? Tôi muốn tắt tùy chọn menu tùy thuộc vào Phân đoạn được hiển thị.

Kind regards, sứa

Trả lời

24

Khá nhiều giống nhau nhưng đặt mã vào đoạn thay vào đó, lưu ý chữ ký phương pháp khác nhau.

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    MenuItem item= menu.findItem(R.id.men_1); 
    item.setEnabled(false); 
    super.onPrepareOptionsMenu(menu); 
} 

Vì vậy, các đoạn chịu trách nhiệm về lạm phát menu, vv

Sửa Lưu ý sự cần thiết phải gọi setHasOptionsMenu(true)

+0

Cảm ơn bạn! Tuy nhiên, nó không hoạt động, cho đến khi tôi thêm một cuộc gọi vào "setHasOptionsMenu (true)" trên Fragment. – jellyfish

+0

Đối với bất kỳ ai đến đây tìm bạn cũng phải ghi đè lênCreateOptionsMenu trong hoạt động. Một cái gì đó như thế này: @Override công khai boolean onCreateOptionsMenu (Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate (R.menu.main, menu); trả về true; } – span

+0

Mỏ hoạt động mà không ghi đè trong Hoạt động. – PJL