Android的:如何重新行动起来吧,当片段改变(Android: How to recreate

2019-08-08 00:02发布

我有一个展示的几个片段的活动。 活动视图只包含ViewPager初始化定制FragmentPagerAdapter。 该适配器提供3个片段中的导航。

一切似乎除了操作栏做工精细。

我重写onCreateOptionsMenu()方法在我的片段创建任何片段单独行动吧:

      @覆盖      公共无效onCreateOptionsMenu(菜单菜单,MenuInflater吹气)      {          super.onCreateOptionsMenu(菜单,充气器);          menu.clear(); 

//fragment specific menu creation }

当我刷卡,会出现新的片段,但操作栏保持不变,几秒钟。 大概几秒钟后,这种方法被称为和行动酒吧得到改变。

当操作栏在一段时间改变刷卡完成后这看起来很糟糕。 我怎么能马上重新行动起来吧,轻扫在开始之前?

Answer 1:

你可以问机器人重新创建的动作条通过调用自动完成之前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

你可以做在那里片段特定菜单创建



Answer 2:

它可以通过实现onCreateOptionsMenu和调用setHasOptionsMenu(真)在每个片段onAttach回调并更改相应的行动来完成。

要显示它没有任何动作片段setHasOptionsMenu(假)



Answer 3:

如果您使用的动作条的标签,你会看到这样的回答:

我怎样才能改变操作栏的动作动态?



Answer 4:

最后,我找不到任何合理的方式来实现这一目标。

最好是使动作条片段,而不是活动的一部分,但它是不可能的。

我最终清算动作条菜单栏和标题刷卡时开始(你可以设置浏览量特殊监听器)和刷卡完成,新的片段显示时重新设置菜单和标题。

在给出了一些时间滞后和动作条刷卡时看起来很奇怪空的,但是这是你能做的最好的。
Android的API为c ...



文章来源: Android: How to recreate Action bar when fragment changed