我有一个包含一些操作的工具栏,但当我将片段更改为另一个片段时,这些操作应该会发生变化。
我将setHasOptionsMenu(true);放在需要更改工具栏项操作的每个片段的onCreate中。
片段1 onOptionsItemSelected示例
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.borrarlote:
Toast.makeText(viewRoot.getContext(), "Parametros", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}只需向我显示一个带有片段名称的Toast,它就可以正确地执行。
现在我切换到片段2,在onCreate和onOptionsItemSelected中重复setHasOptions(true):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.borrarlote:
Toast.makeText(viewRoot.getContext(), "Fragment Inicio", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}在我的理论中,应用程序会显示一个Toast,说"Fragment Inicio“,但在现实中,它显示一个Toast,说"Parametros”,然后显示另一个说"Fragment Inicio“。
就像选项不会改变一样,只需在每次单击该项目时,将新操作添加到您必须执行的操作列表中。
当我输入一个新的片段时,有什么方法可以清理这些操作吗?
问候
发布于 2017-11-13 20:29:16
我解决了这个问题,为我需要的每个片段创建了一个menu.xml,并在它上面膨胀了菜单。完美工作
https://stackoverflow.com/questions/47263847
复制相似问题