我遇到以下情况:Activity
包含Fragment
,其中ViewPager
包含片段:
-> Childfragment
Activity -> Fragment w ViewPager -> Childfragment
-> Childfragment
我在FragmentStatePagerAdapter
上使用ViewPager
。
问题是:我必须打开和关闭Childfragments的ActionBarMenu,我的方法是(简而言之)我的主机片段中的以下内容:
boolean childsHaveMenu = false;
public void setChildsHaveMenu(boolean childsHaveMenu) {
this.childsHaveMenu = childsHaveMenu;
pagerAdapter.notifyDataSetChanged();
getActivity().supportInvalidateOptionsMenu();
}
以我的FragmentStatePagerAdapter
getItem()
方法:
fragment.setHasOptionsMenu(childsHaveMenu);
return fragment;
不幸的是,pagerAdapter.notifyDataSetChanged();
和getActivity().supportInvalidateOptionsMenu();
似乎都不会强迫Childfragments更新'它的ActionBarMenu,至少不是一贯的。
我的第二种方法是使用布尔值向Exposes发送一个事件,告诉他们应该显示他们的ActionItems,然后在onCreateOptionsMenu()
中隐藏或显示它们,但我又不能强迫Childfragments调用onCreateOptionsMenu()
以便ActionBar更新。
关于如何解决这个问题的任何想法都将受到高度赞赏:)