小菜单问题

时间:2011-04-08 16:05:04

标签: android menu

我正在尝试在我的程序中实现this“tab”样式,我有它工作,但菜单不适用于我的不同活动,因为它们不像普通标签那样显示。我需要做的就是将菜单放在创建选项卡的活动中,但问题出现在我点击手机上的菜单按钮然后点击而不选择菜单项。下次我点击菜单时,即使我正在进行其他活动,它也会显示我所在的最后一个菜单。

例如选择菜单“MA”的活动“A”然后我进入活动“B”,菜单“MB”然后点击菜单,菜单“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;
}

菜单选择基于所选的标签号。

我不能这样做吗?

1 个答案:

答案 0 :(得分: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;
}