我正在尝试在我的程序中实现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;
}
菜单选择基于所选的标签号。
我不能这样做吗?
答案 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;
}