Android - 在片段之间切换;菜单项问题

时间:2014-04-29 22:00:22

标签: java android android-fragments menu

我的应用程序使用片段,操作栏和导航抽屉。当我在片段之间切换时,我的菜单项会被破坏而不再起作用。我尝试了各种可能解决问题但却无济于事的事情。

在我的片段中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();来防止在片段之间切换时堆叠菜单项。当第一次选择片段时,菜单运行所选功能就好了,但切换到另一个片段后再返回菜单项单击不执行任何操作。

1 个答案:

答案 0 :(得分:0)

问题是你清理菜单并再次进行膨胀菜单。

删除行

     inflater.inflate(R.menu.blank, menu);

相反,您需要清除Fragment的onCreateOptionsMenu()中的菜单,以便不会显示该speciifc片段的菜单,并显示其他片段。

此外,您只需要在Activity onCreateOptionsMenu中对菜单进行充气,这对所有片段都是通用的

另见这里的答案。 Action buttons are shown in all fragments