2017-05-18 46 views
-2

我們必須知道當前片段是尋呼機適配器中的可見模式,但無法處理。需要從尋呼機適配器中識別當前視圖片段

for (Fragment fragment : getChildFragmentManager().getFragments()) { 
    if (fragment instanceof OffLineSyncedFragment && fragment.isVisible() && fragment.isVisible()) { 
     ((OffLineSyncedFragment) fragment).confirmDeleteAlert(getActivity(), documentHelper, false, isDocument, null); 
    } 
    else if(fragment instanceof OffLineFailedFragment && fragment.isVisible()){ 

    } 
} 

這是我的代碼不能正常工作。

+0

給你的片段標籤和使用標籤來識別片段 – Ezio

+0

有幾種方法可以根據目的做到這一點。如果你可以說爲什麼你要查詢活動片段,我可以提供相關的解決方案。 –

回答

0

ViewPager.OnPageChangeListener這裏是正確的做法。正如你已經注意到,onPageSelected(int position)不會被調用,直到頁面居中。因此,當頁面被正確居中它會給你當前可見的片段,

+0

你真的認爲onPageSelected在這種情況下工作? –

+0

是當頁面變更來得到當前的片段可見它工作正常。 – Anmol

+0

請嘗試,當且僅當存在片段列表時,您的方法才能正常工作。在一般情況下,您的方法將返回該位置上相同片段的新實例,這對任何更新都幾乎沒有用處。 –

0

有一些方法來做到這一點。首先簡單和直接,你可以對你的看法尋呼機設置頁面更改偵聽:

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(final int i, final float v, final int i2) { 
    } 
    @Override 
    public void onPageSelected(final int i) { 
     // If you are user FragmentPagerAdapter below is the right way to get fragment 
     Fragment fragment= getChildFragmentManager().findFragmentByTag("android:switcher:" + R.id.viewPager_card_exchanger + ":" + i); 

     if(fragment!=null){ 
      // Do your stuff here 
     } 
    } 
    @Override 
    public void onPageScrollStateChanged(final int i) { 
    } 
}); 

或者您可以覆蓋下面的片段方法:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     System.out.println("VISIBLE"); 
    } else { 
     System.out.println("GONE"); 
    } 
} 
相關問題