我有一个显示一些 fragment 的 Activity 。 Activity View 仅包含使用自定义 FragmentPagerAdapter 初始化的 ViewPager。 此适配器提供 3 个 fragment 之间的导航。
除了操作栏外,一切似乎都正常。
我在我的 fragment 中覆盖 onCreateOptionsMenu() 方法来为任何 fragment 创建单独的操作栏:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
//fragment specific menu creation
}
当我滑动时,会出现新的 fragment ,但操作栏会保持几秒钟不变。可能在几秒钟后调用此方法并更改操作栏。
在滑动完成后一段时间内更改操作栏时,这看起来很糟糕。 如何在开始滑动之前立即重新创建操作栏?
最佳答案
您可以通过调用 invalidateOptionsMenu();
在您更改 fragment 的位置附近执行此操作,以尝试减少 fragment 和操作栏更改之间的“滞后”。
编辑
完整的解决方案可能如下所示:
class activity extends Activity{
private void switchFragment(){
...do fragment changing stuff
activity.invalidateOptionsMenu();
}
}
class someFragment extends Fragment{
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
//fragment specific menu creation
}
}
无论哪个 fragment 在此期间打开
activity.invalidateOptionsMenu();
然后会调用它的
onCreateOptionsMenu
您可以在其中创建特定于 fragment 的菜单
关于Android: fragment 更改时如何重新创建操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14479749/