2011-11-10 31 views
3

我的應用程序的主要活動是一個TabActivity,它包含一個OptionsMenu。我定義了一些其他的活動(進入一個標籤頁),我想在每個活動中定義一個菜單,並將其菜單與主菜單合併。可能嗎?合併包含活動菜單的TabActivity菜單

+0

我不認爲它可能是因爲Android專注於Tab活動中的一項活動。如果您打算將每個活動的菜單與主菜單合併。它沒有意義。 但是你可以做到這一點,你可以在主選項卡活動中給其他活動菜單充氣,並將其他菜單選項添加到主活動菜單中。 – Arslan

回答

9

是的,這是可能的。基本上你只需要將多個xml文件充入相同的選項菜單。項目按通貨膨脹順序添加到菜單中。

只需爲TabActivity覆蓋onCreateOptionsMenu(Menu menu),即可使包含主選項的xml文件膨脹。然後爲每個內部選項卡活動覆蓋它,從而誇大特定於選項卡的選項。只要寫他們,你通常會:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.options, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

菜單「屬於」當前活動的內標籤的活動,但來填充它,onCreateOptionsMenu自動調用父活動太(由super)。

然而,奇怪的是,onMenuItemSelected(int featureId, MenuItem item)並沒有這樣做。爲了處理項目選擇,內標籤的活動還是要顯式調用父活動的相應方法(你確定所選擇的選項不是標籤專用後):

return super.onMenuItemSelected(featureId, item) 
    || getParent().onMenuItemSelected(featureId, item); 
+0

我想我會在每個TabActivity中聲明完整的菜單... :) –

+0

現在我很好奇。爲什麼? :-) – mhelvens

+0

我不知道,我覺得它有點太凌亂了。 (這不是,但我有一個奇怪的感覺) –

1

您是在動態創建菜單還是在單獨的XML中創建菜單?

如果動態地你可以將其設置爲

public void createMenu() 
{ 

//Main Menu here 

    switch(tab) 
    { 

     case '1': //add tab 1 menu 
     break; 
     case '2': //add tab 2 menu 
     break; 

    } 

} 
+0

我使用單獨的XML創建它們。如果沒有其他選項,我沒有問題以編程方式創建它們,但我寧願將它保存在XML中。 –