我的应用程序使用片段,操作栏和导航抽屉。当我在片段之间切换时,我的菜单项会被破坏而不再起作用。我尝试了各种可能解决问题但却无济于事的事情。
在我的片段中onCreate
我有setHasOptionsMenu(true);
。
这是我的onCreateOptionsMenu
:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d("Log", "Inflating Menu");
menu.clear();
inflater.inflate(R.menu.blank, menu);
super.onCreateOptionsMenu(menu, inflater);
}
这是我的简单onOptionsItemSelected
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.mySearch:
Log.d("Log", "Implementing Search Method");
search();
return true;
case R.id.action_settings:
//do something
return true;
}
return super.onOptionsItemSelected(item);
}
在每个片段的菜单中,我使用menu.Clear();
来防止在片段之间切换时堆叠菜单项。当第一次选择片段时,菜单运行所选功能就好了,但切换到另一个片段后再返回菜单项单击不执行任何操作。
答案 0 :(得分:0)
问题是你清理菜单并再次进行膨胀菜单。
删除行
inflater.inflate(R.menu.blank, menu);
相反,您需要清除Fragment的onCreateOptionsMenu()中的菜单,以便不会显示该speciifc片段的菜单,并显示其他片段。
此外,您只需要在Activity
onCreateOptionsMenu
中对菜单进行充气,这对所有片段都是通用的