在viewPager片段中显示/隐藏菜单项没有延迟(Android)

我知道之前已经多次在这个网站上发布了类似的问题,但是,我的问题不是我如何在不同的片段中显示/隐藏菜单项.我明白了.问题是刷卡片段与显示或隐藏的新菜单项之间存在延迟.这种延迟确实会减损界面.除其他原因外,操作栏菜单项中的更改应立即避免单击错误片段中的某些菜单项.

所以问题是,当用户开始滑动片段以转到下一个片段时,如何立即更改操作栏中的菜单项?

我知道这是可能的,因为各种应用程序已经这样做了.
我目前正在覆盖每个片段中的onPrepareOptionsMenu()方法,并告诉它要显示哪些项目以及要隐藏哪些项目.我使用supportInvalidateOptionsMenu()方法来提示更改菜单项,但是滞后仍然太长而且很明显.

我愿意改变我更改片段中菜单项的结构/技术,以便在刷卡开始时立即改变菜单时间.

请帮忙.谢谢!

最佳答案
好吧,所以看完所有地方,并找到其他人没有真正答案的类似帖子后,我终于想出了如何在刷页后立即使操作栏菜单无效.您希望在活动的onCreate方法中的onPageChangeListener中执行此操作,如下所示:

yourViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() 
{
    @Override
    public void onPageSelected(int position) 
    {
        //Clear action bar menu items. 
        //This prompts the onPrepareOptionsMenu which recreates the menu with
        //with the appropriate options for a given fragment as defined by you 
        supportInvalidateOptionsMenu();
    }

    @Override
    public void onPageScrollStateChanged (int arg0)
    {
        //Clear action bar menu items and display correct ones
        //This invalidates the menu options as soon as the swiping of pages begins
        supportInvalidateOptionsMenu();
    }
}

因此,只要您希望页面滑动触发指定的操作,onPageScrollStateChanged方法就是您真正想要的.

转载注明原文:在viewPager片段中显示/隐藏菜单项没有延迟(Android) - 代码日志