Android 工具栏菜单显示错误的片段
我的主要活动有两个片段->父级和子级,如下所示: 每个片段都应该有自己的操作栏和菜单 我的问题是:为什么应该在子片段中显示的菜单混合在父片段中 Child-Menu-1和Child-Menu-2应该在子片段的菜单内 这就是我所做的: 片段父项:Android 工具栏菜单显示错误的片段,android,android-fragments,android-actionbar,android-toolbar,android-menu,Android,Android Fragments,Android Actionbar,Android Toolbar,Android Menu,我的主要活动有两个片段->父级和子级,如下所示: 每个片段都应该有自己的操作栏和菜单 我的问题是:为什么应该在子片段中显示的菜单混合在父片段中 Child-Menu-1和Child-Menu-2应该在子片段的菜单内 这就是我所做的: 片段父项: @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_parent, container, false);
setHasOptionsMenu(true);
Toolbar myToolbar = (Toolbar) view.findViewById(R.id.tb_parent);
((AppCompatActivity)getActivity()).setSupportActionBar(myToolbar);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("PARENT");
//((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_parent, menu);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_parent, container, false);
setHasOptionsMenu(true);
//Toolbar myToolbar = (Toolbar) view.findViewById(R.id.tb_parent);
//((AppCompatActivity)getActivity()).setSupportActionBar(myToolbar);
//((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("PARENT");
//((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_parent, menu);
}
碎片儿童:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_child, container, false);
setHasOptionsMenu(true);
Toolbar myToolbar = (Toolbar) view.findViewById(R.id.tb_child);
((AppCompatActivity)getActivity()).setSupportActionBar(myToolbar);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("CHILD");
//((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_child, menu);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_child, container, false);
setHasOptionsMenu(true);
Toolbar myToolbar = (Toolbar) view.findViewById(R.id.tb_child);
((AppCompatActivity)getActivity()).setSupportActionBar(myToolbar);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("CHILD");
//((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_child, menu);
}
我已经尝试过的:
- 将getSupportActionBar移动到onViewCreated添加或替换
片段后,是否尝试调用
?我从该链接找到答案:无效操作菜单()
如果我们在一个活动中运行多个工具栏菜单(即使在我的例子中是在不同的片段中)- 对于第一个工具栏,充气来自onCreateOptionsMenu(),回调来自onOptionsItemSelected()
- 对于第二个工具栏,我们需要通过将第二个菜单工具栏充气并手动设置回调:
toolbar2 = (Toolbar) findViewById(R.id.tool_bar_bottom); toolbar2.inflateMenu(R.menu.bottom_menu);//changed toolbar2.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem arg0) { if(arg0.getItemId() == R.id.item_id){ } return false; } });
谢谢@skadoosh。嗨,谢谢你的建议,你能说得更具体些吗?我应该将InvalidateOptions菜单()放在哪里?我根据布局创建了片段,因此它不是动态添加/替换的。我已经尝试放置getActivity().InvalidateOptions菜单();在onViewCreated或OnCreateOptions菜单中,如果结果仍然相同,请检查下面的说明