2016-01-29 77 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