Android 通知viewpager中的片段

Android 通知viewpager中的片段,android,android-viewpager,Android,Android Viewpager,我正在我的应用程序中使用ViewPager。在每个片段中都有一个工具栏。只需轻触图像,工具栏就会显示在屏幕上方。但是我必须通知所有剩余的片段做同样的事情。因此,当用户滚动到下一个片段时,他看不到工具栏 我尝试添加setUserVisibleHint(),但它不起作用,因为只有在片段完全可见时才调用它,从而向用户显示退出的工具栏 然后我在onResume中尝试了它,并设置了pager.offscreenpagelimit=1,它对下一个片段很有效,但对下一个片段无效 谢谢 首先使用以下命令从片段通

我正在我的应用程序中使用
ViewPager
。在每个片段中都有一个工具栏。只需轻触图像,工具栏就会显示在屏幕上方。但是我必须通知所有剩余的片段做同样的事情。因此,当用户滚动到下一个片段时,他看不到工具栏

我尝试添加
setUserVisibleHint()
,但它不起作用,因为只有在片段完全可见时才调用它,从而向用户显示退出的工具栏

然后我在
onResume
中尝试了它,并设置了
pager.offscreenpagelimit=1
,它对下一个片段很有效,但对下一个片段无效


谢谢

首先使用以下命令从片段通知您的活动:

在动画结尾的片段中:

((YourActivity)getActivity()).hideToolbar(); 
在活动中:

public void hideToolbar() {
// Redraw view pager without toolbar (notify your adapter create pager without toolbar)
}

那么,为什么不把你的工具栏从你的片段中拿出来,在“活动”中创建一个,并在“页面更改”中更改它的状态(当然它不会滑动,但可能会滑动)

你有两个问题要面对

  • 如何调用现有片段以隐藏/显示其工具栏
  • 如何使用隐藏工具栏创建另一个片段
  • 第一个问题可以通过使用找到的Otto事件库轻松解决。只需将此代码粘贴到viewpager片段中:

    Bus bus = new Bus();
    
    @Override
    protected void onResume() {
        super.onResume();
        bus.register(this);
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        bus.unregister(this);
    }
    
    @Subscribe
    public void onToolbarEvent(ToolbarEvent event) {
        //do your toolbar logic
    }
    
    然后,在图像上的onClick事件中,刚刚放置(当然,之前创建了总线对象)

    ToolbarEvent可以是空类。如果您阅读了Otto事件,您将了解它是如何工作的

    另一个问题是,当viewpager实例化新片段时,如何知道工具栏应该隐藏/显示?只需在共享预引用中添加一个布尔标志,这样每次创建片段时,它都可以检查是否可以显示工具栏,例如在onViewCreated()方法中。可以找到如何使用共享预引用的示例


    希望我能帮上一点忙。

    当你传递到下一个片段时,你想隐藏你的工具栏/操作栏吗?是的..工具栏应该为ViewPagerId中的下一个片段隐藏。你试试看:?顺便问一句,你是在使用Android 5的工具栏吗?我在使用支持v7,它有工具栏实现。你试过了吗:?我必须为每个片段添加一个工具栏在viewpager中创建一个片段,这样当我滚动每个页面时,我会看到每个页面都有一个不同的工具栏。
    bus.post(new ToolbarEvent());