2

私はこの質問がすでに複数回尋ねられていることを知っていますが、私は別の種類の「スキップ」を探していると思います。 TabLayoutとリンクViewPagerViewPagerのページをスキップ+ TabLayout

ViewPager vp = (ViewPager) findViewById(...); 
TabLayout tl = (TabLayout) findViewById(...); 
vp.setAdapter(new NoSwipePagerAdapter()); 
tl.setupWithViewPager(vp); 

viewpagerがスクロール可能ではないので、予想される動作は次のようになります:「A」タブをタップ、viewpagerがスクロールしているタブにあれば。

私が "A"をタップして "D"をタップすると、ビューページャーがBとCを介してアニメーション化されます。私がやっていることは、文字通りBとCをスキップしてD

主にBとCは重いフラグメントであるだけでなく、設計上の問題でもあります。

setCurrentItem(int index, boolean smoothScroll)のすべての組み合わせを試しましたが、うまくいかなかった。

ViewPagerページをスキップすることはできますか?前もって感謝します。

答えて

1

あなたは、私が思うに次の行

ViewPager.setCurrentItem(3); 
+0

私が言ったように、これは私のために働いていません。アニメーション化するとき、ViewPagerは他のフラグメントを表示します。 – Matteo

+1

viewpagerが作成されると、あらかじめ定義されたフラグメントフローを取得するので、ビューページャがAフラグメントからDフラグメントに直接ジャンプすることはできませんが、中間フラグメントを非常に高速で渡します。 –

+0

私が探しているものを実現するための直接的な方法..最終的には、将来これを行うカスタムアダプタを実装しようとします – Matteo

0

を書く二つの断片を飛ばして直接第四の断片に行きたい場合は、あなたがpagerAdapterを作成した後怒鳴る

public class PagerAdapter extends FragmentStatePagerAdapter { 
int mNumOfTabs; 

public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = NumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 

    Fragment fragment = null; 
    switch (position) { 
     case 0: 
      fragment = new Fragment_PatientList(); 

      break; 
     case 1: 
      fragment = new FragmentB(); 
      break; 
     case 2: 
      fragment = new FragmentC(); 
      break; 
     default: 
      return null; 
    } 
    return fragment; 
} 

@Override 
public int getCount() { 
    return mNumOfTabs; 
} 

} 

ようPagerAdapterを作成する必要があり、セットviewPager.setAdapter(adapter) 最後に、tablayoutをあなたのビューページとこのように接続することができます

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 
関連する問題