Android: fragment 更改时如何重新创建操作栏

标签 android android-actionbar swipe

我有一个显示一些 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();

让 android 在自动创建之前重新创建 actionbar

在您更改 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/

相关文章:

android - 如何在 wordpress [通过 android] 中对用户进行身份验证

android - ActionBar 向上导航重新创建父 Activity 而不是 onResume

jquery - 使用 jQuery 检测 iPhone 滑动

ios - 如何在cocos2d中针对特定场景实现手势

ios - UITableViewCell 滑动不显示删除按钮

android - 如何创建使用 java byte[] 作为输入的新 Android 音频 HAL?

android - 如何通过在android中编程使设备振动n次?

java - 缺少 getHardwareAddress() 方法

Android 支持库 ActionBar 在 2.3 设备中不起作用

android - 抽屉导航和 Android 中的 Activity