Android Action Bar菜单项目

Android Action Bar菜单项目

问题描述:

我正在将项目添加到操作栏,并且当活动第一次加载它时,该项目只存在于操作栏中的正确位置。然后,当我到另一个活动,并通过Intent回来,该菜单项被复制。它仍然显示在操作栏中,但它也显示在菜单中。Android Action Bar菜单项目

这是我的代码从一个活动到另一个活动。这是从添加屏幕到主屏幕。当它进入主屏幕时,添加操作栏项目将显示在菜单和操作栏中。当Home最初加载时,它只会像操作栏一样显示在操作栏中。

Intent intent = new Intent(Add.this, Home.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

这里是家庭的活动我的菜单充气

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

这项活动扩展tabactivity这可能是它的原因不是重装。我对一个类扩展活动做了一个小测试,它似乎工作正常。我应该只是替换选项卡活动,然后因为它已被弃用。

+0

当您返回到第一个活动时,您是否尝试在'onResume()'中调用'invalidateOptionsMenu()'? –

+0

你可以在intent之前明确地卸载actionBar。或在活动A开始时将其杀死并重建它 - > invalidateOptionsMenu()做到这一点 – bofredo

+0

我认为现有状态存在一些问题。 onCreateOptionsMenu()似乎每次从Activity返回时都会执行。在膨胀菜单之前调用menu.clear()应该适合你。 –

确保您调用super.onCreateOptionsMenu(menu)而不是始终返回true。我试过这段代码,它为我工作。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    final MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.menu.your_menu_file, menu); 
    return super.onCreateOptionsMenu(menu); 
}