2017-05-18 9 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"); 
    } 
} 
関連する問題