我有一个展示的几个片段的活动。 活动视图只包含ViewPager初始化定制FragmentPagerAdapter。 该适配器提供3个片段中的导航。
一切似乎除了操作栏做工精细。
我重写onCreateOptionsMenu()方法在我的片段创建任何片段单独行动吧:
@覆盖 公共无效onCreateOptionsMenu(菜单菜单,MenuInflater吹气) { super.onCreateOptionsMenu(菜单,充气器); menu.clear();
//fragment specific menu creation }
当我刷卡,会出现新的片段,但操作栏保持不变,几秒钟。 大概几秒钟后,这种方法被称为和行动酒吧得到改变。
当操作栏在一段时间改变刷卡完成后这看起来很糟糕。 我怎么能马上重新行动起来吧,轻扫在开始之前?
你可以问机器人重新创建的动作条通过调用自动完成之前invalidateOptionsMenu();
做到这一点的地方接近的地方,你改变片段,试图降低片段和动作条变化之间的“滞后”的地步。
编辑
一个完整的解决方案可能是这样的:
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
}
}
无论片段期间是开放的
activity.invalidateOptionsMenu();
然后将调用其
onCreateOptionsMenu
你可以做在那里片段特定菜单创建
它可以通过实现onCreateOptionsMenu和调用setHasOptionsMenu(真)在每个片段onAttach回调并更改相应的行动来完成。
要显示它没有任何动作片段setHasOptionsMenu(假)
最后,我找不到任何合理的方式来实现这一目标。
最好是使动作条片段,而不是活动的一部分,但它是不可能的。
我最终清算动作条菜单栏和标题刷卡时开始(你可以设置浏览量特殊监听器)和刷卡完成,新的片段显示时重新设置菜单和标题。
在给出了一些时间滞后和动作条刷卡时看起来很奇怪空的,但是这是你能做的最好的。
Android的API为c ...