2013-03-15 59 views
5

Trong ứng dụng của tôi, tôi có một Hoạt động lưu trữ hai Phân đoạn. Nếu tôi thêm một MenuItem vào Menu, tôi có thể lấy lại nó trong các mảnh của mình không? Liên kết giữa OptionMenu trong Hoạt động và OptionMenu trong phần con của anh ấy là gì?Android: OptionMenu giữa Hoạt động và Phân đoạn

+0

Whats lý do cho wantin để lấy menuItem trong các mảnh vỡ? Thông thường bạn chỉ muốn thêm vào trình đơn từ các mảnh và đó chỉ là vấn đề ghi đè onCreateOptionsMenu trong các đoạn và gọi setHasOptionsMenu (true) trong phương thức onCreate của chúng –

Trả lời

5

Bạn phải gọi setHasOptionsMenu(); với đối số true làm đối số được chuyển đến nó, sau đó bạn có thể ghi đè lên menuTạo tùy chọn.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Enable the option menu for the Fragment 
    setHasOptionsMenu(true); 
} 

Nếu bạn muốn có optionsMenu khác nhau cho mỗi đoạn bạn sẽ xác định hai menu file xml khác nhau và thổi phồng chúng trong onCreateOptionsMenu

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 

    inflater.inflate(R.menu.fragment1_menu, menu); 


} 
+2

Nó hiển thị 2 menu .. 1 từ hoạt động của tôi và 1 trong phân đoạn. Bạn có biết cách ẩn menu hoạt động không. mà tôi có trong tất cả các mảnh vỡ – djk

+2

Tôi nghĩ bạn không nên tăng cường menu trong Hoạt động của bạn để tránh điều đó. –

+0

thử đặt menu.removeItem (R.id.parentMenuItem); trong mảnh vỡ để tránh sự lặp lại –

0

tôi phát hiện ra rằng tôi có thể thêm MenuItem trong Hoạt động onCreateOptionsMenu() và sau đó lấy chúng trong Fragment s bằng id của họ, như thế này:

Hoạt động:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    itemId= 0; 
    menu.add(0, itemId, 0, "item"); 
    return super.onCreateOptionsMenu(menu); 
} 

Fragment:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    itemId= 0 
    MenuItem menuItem= menu.findItem(itemId);       
} 
+1

Không, vẫn không hoạt động .. –

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