2011-04-08 23 views
0

我想在我的程序中實現this「tab」風格,我有它的工作,但菜單的工作不在我的不同活動,因爲他們不顯示像正常的標籤做。我必須做的菜單是將它放入創建選項卡的活動中,但是當我按下手機上的菜單按鈕然後在未選擇菜單項的情況下回擊時,問題就出現了。下次我點擊菜單時,即使我處於不同的活動狀態,它也會顯示我所在的最後一個菜單。小菜單proplem

例如選擇菜單「MA」的活動「A」,然後進入菜單「MB」的活動「B」,然後點擊菜單,菜單「MA」將顯示,而不是「MB」,這是應該出現。

這是我的菜單聲明

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    super.onCreateOptionsMenu(menu); 
    Log.d("onTabChanged", "selectedTab: " + String.valueOf(selectedTab)); 

    switch(selectedTab){ 
    case 0: 
     break; 
    case 1: 
     menu.add(1,0,0, "Item 1 ").setIcon(Main.resizeImage(this,R.drawable.ic_menu_preferences,100,100)); 
     menu.add(1,1,0, "Item 2").setIcon(Main.resizeImage(this, R.drawable.ic_menu_invite,100,100)); 
     return true; 
    case 2: 
     menu.add(1,2,0,"Item 3").setIcon(Main.resizeImage(this,R.drawable.ic_menu_preferences,100,100));   
     return true; 
    case 3: 
     menu.add(1,3,0,"Item 4").setIcon(Main.resizeImage(this,R.drawable.ic_menu_preferences,100,100));    
     menu.add(1,4,0, "Item 5").setIcon(Main.resizeImage(this, R.drawable.ic_menu_invite,100,100)); 
     return true; 
    default: 
     return false; 
    } 
    return false; 
} 

菜單選擇是根據所選擇的選項卡數。

我不能這樣做嗎?

回答

3

將菜單創建移動到onPrepareOptionsMenu過程。對於當前活動,onCreateOptionsMenu僅被調用一次,但onPrepareOptionsMenu - 每次在菜單即將顯示之前調用。

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    Log.d("onTabChanged", "selectedTab: " + String.valueOf(selectedTab)); 

    menu.clear(); // Do not forget to clear previous menu 
    switch(selectedTab){ 
    case 0: 
     break; 
    case 1: 
     menu.add(1,0,0, "Item 1 ").setIcon(Main.resizeImage(this,R.drawable.ic_menu_preferences,100,100)); 
     menu.add(1,1,0, "Item 2").setIcon(Main.resizeImage(this, R.drawable.ic_menu_invite,100,100)); 
     return true; 
    case 2: 
     menu.add(1,2,0,"Item 3").setIcon(Main.resizeImage(this,R.drawable.ic_menu_preferences,100,100));   
     return true; 
    case 3: 
     menu.add(1,3,0,"Item 4").setIcon(Main.resizeImage(this,R.drawable.ic_menu_preferences,100,100));    
     menu.add(1,4,0, "Item 5").setIcon(Main.resizeImage(this, R.drawable.ic_menu_invite,100,100)); 
     return true; 
    default: 
     return false; 
    } 
    return false; 
} 
+0

這樣做,只是顯示在末尾菜單,新菜單,只是不斷疊加起來,因爲我通過活動 – tyczj 2011-04-08 16:24:17

+0

移動你有沒有看到我的代碼行,我專門評論? 'menu.clear(); //不要忘記清除之前的菜單 – GrAnd 2011-04-08 16:28:53

+0

ahh不知道menu.clear()謝謝你現在的工作,大多數已經編輯,因爲我回復 – tyczj 2011-04-08 16:29:00