2016-01-29 75 views
1

当片段可见时(用户),我需要执行一个方法。此方法用于显示片段内的工具提示。当viewpager中的片段对用户可见时显示工具提示

我有1个活动的viewpager和菜单栏位于布局的底部以浏览一个片段。同时我也禁用了viewpager的轻扫功能。

我需要在片段可见或活动时调用showTooltip()。我尝试过使用简历和setUserVisibleHint(),但仍然无法正常工作。当viewpager移动到可见页面时,工具提示不会显示。

public void showTooltip(){ 
    Tooltip.make(getActivity(), 
    new Tooltip.Builder(101) 
    .anchor(gridSearch, Tooltip.Gravity.CENTER) 
    .closePolicy(new Tooltip.ClosePolicy() 
    .insidePolicy(true, false) 
    .outsidePolicy(true, false), 3000) 
    .activateDelay(1500) 
    .showDelay(300) 
    .text("Click to see all videos.") 
    .maxWidth(500) 
    .withArrow(true) 
    .withOverlay(true) 
    .floatingAnimation(Tooltip.AnimationBuilder.DEFAULT) 
    .build() 
    ).show(); 
} 

回答

0

要注意的是片段显示,您可以使用ViewPager.OnPageChangeListener有回调,那个叫当您切换ViewPager小号网页:

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int i, float v, int i2) { 

    } 

    @Override 
    public void onPageSelected(int i) { 
     //here you can show yours tooltip 
    } 

    @Override 
    public void onPageScrollStateChanged(int i) { 

    } 
}); 
+0

提示将锚定在片段的一些看法。如果我在pageselected中调用它,它将返回视图的错误空指针。 @mohax –

+0

@IbnuHabibie,你可以在onPageSelected中调用片段方法。您可以从fragmentManager中,从列表中获取片段,在其中存储它或使用某个消息系统将消息发送到片段。即EventBus或Otto库或Android buildIn特性作为LocalBroadcatManager或Handler – mohax