2012-06-05 79 views
1

我讀過可以在此guide上爲每個標籤顯示不同的菜單。每個標籤的菜單不同

我有3個在MainActivity中初始化的選項卡。 即使我在每個包含的Activity中調用onPrepareOptionsMenu()onCreateOptionsMenu(),它們也不會執行。 我只是在MainActivity的初始化顯示菜單成功...

MainActivity:

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.layout.menu_tab_1, menu); 
    return true; 
} 

此菜單顯示。 我的一個TabActivities的:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.clear(); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.layout.menu_tab_2, menu); 
    return true; 
} 

當我更改選項卡,此菜單不會刷新。 但我嘗試了多種組合(onCreate/onPrepare,Override ...),但沒有成功。

如何正確使用? 謝謝

+1

post YOur code !! 1 – KMI

+0

你確定你已經寫了'@ Override'標籤。如果是這樣,請發表你的'onPrepareOptionsMenu()'&'onCreateOptionsMenu()'... – GAMA

+0

你可以使用一個標誌(例如一個int)來跟蹤你實際在哪個標籤中..然後在onCreateOptionsMenu()您可以根據標誌的值定義菜單。 –

回答

0

你有兩個選擇來做到這一點。

首先,您可以重寫onKeyDown方法,並檢測用戶何時按下菜單,而不是讓主活動處理它,將事件分派給活動選項卡活動。

否則,您可以使用碎片而不是Tab主機中的活動。片段機制非常適合將來自多個源的選項菜單(通常是一個活動和一個或多個片段)組合在一起。