Android:如何在碎片更改时重新创建操作栏
我有一个活动显示一些片段。 活动视图仅包含使用自定义FragmentPagerAdapter初始化的ViewPager。 该适配器提供3个片段之间的导航。
除了Action bar之外,所有似乎都很好的工作。
我重写我的片段中的onCreateOptionsMenu()方法来为任何片段创建单独的操作栏:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
//fragment specific menu creation
}
当我滑动时,会出现新的片段,但动作栏保持不变几秒钟。 可能在几秒钟后调用此方法并更改操作栏。
这在刷卡完成后稍后更改操作栏时看起来很糟糕。 如何在刷卡开始之前立即重新创建操作栏?
你可以通过调用invalidateOptionsMenu();
来让android自动重新创建操作栏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并在每个片段的onAttach回调中调用setHasOptionsMenu(true)并相应地更改操作来完成。
在其中显示没有任何操作的片段setHasOptionsMenu(false)
如果您使用的是ActionBar选项卡,您希望看到这个答案:
我如何动态更改动作栏动作?
链接地址: http://www.djcxy.com/p/63913.html上一篇: Android: How to recreate Action bar when fragment changed