在嵌套片段中使用OptionsMenu而不更新

时间:2017-01-11 06:07:01

标签: android menu android-toolbar android-nested-fragment

我展示了一个片段A,它实现了一个带有多个片段(嵌套片段)的ViewPager。

在我的嵌套片段中,我使用以下方法为菜单充气。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.my_menu, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

此问题已被问及here。我尝试了所有无效的答案。

我的问题是 一切工作正常。但是当我打开另一个片段(它没有任何选项菜单)并返回到上一个视图寻呼机片段,同时单击菜单项onOptionsItemSelected未触发。当我在viewpager中滑动片段并返回到前一个片段时,当我单击菜单项时它会触发。

1 个答案:

答案 0 :(得分:1)

因为viewpager一次维持3个片段。所以当你回来时,它将菜单可见性状态设置为真实到最后一个片段。这就是为什么你的菜单项点击不点火。

在您在案例片段A中保留viewpager的片段中使用以下内容。

private boolean isInitial=true;

@Override
    public void onResume() {
        super.onResume();

        if (!isInitial) {
            int pos = viewpager.getCurrentItem();
            if (pageAdapter.getItem(pos).getUserVisibleHint() && pageAdapter.getItem(pos).isVisible()) {
                pageAdapter.getItem(pos).setMenuVisibility(true);
            }
        } else {
            isInitial = false;
        }
    }