我将一个接一个地替换2个碎片,并且两个碎片都有不同的选项菜单。当我替换第二个片段时,它也显示第一个片段的菜单。 setHasOptionMenu(真);已经设置了两个片段。
我想只显示我正在创建的选项菜单,特别是片段和想要避免其他片段的选项。
请帮助,谢谢
答案 0 :(得分:0)
答案 1 :(得分:0)
这是活动
的方式 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
//your menu item
return true;
}
return super.onOptionsItemSelected(item); // important line
}
在片段onCreateView()方法
中@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true); //imp line
return inflater.inflate(R.layout.fragment_following, container, false);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_1:
// do stuff
return true;
case R.id.action_2:
// do more stuff
return true;
}
return false;
}
答案 2 :(得分:0)
在更换片段(或提交片段事务)之后,您必须声明选项菜单已更改,您可以通过调用invalidateOptionsMenu()
来完成此操作。 onCreateOptionsMenu(Menu)方法将在下次需要显示时调用。
注意:如果您使用的是AppCompat支持库,则需要调用supportInvalidOptionsMenu。