2017-05-18 11 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"); 
    } 
}