Hy、私はAndroid開発アプリが初めてで、viewLayoutのビューページャを使用してアプリケーションを作成したいと思います。リストも含まれているフラグメントがあり、このフラグメントを作成したい選択されたタブに応じて、すべてのページで異なるデータで表示されます。私はこれをほぼ達成しましたが、私はviewPagerページの作成に問題があります。マイViewPagerAdapter extemds FragmentStatePagerAdapter、それは次のようになります。問題は、ページをスワイプであるViewPagerスライドが最初と最後のフラグメントをスキップしています
viewPager = (ViewPager) findViewById(R.id.pager);
final ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
:活動は、最初に作成するときに、私がいるのを見ましたログを
public class ViewPagerAdapter extends FragmentStatePagerAdapter{
static final int NUM_ITEMS = 7;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Log.e("new instance",position+"");
Fragment fragment=null;
switch (position)
{
case 0: fragment=new ChannelListFragment();
Log.e("new instance ",position+"");
break;
case 1: fragment= new ChannelListFragment();
Log.e("new instance ",position+"");
break;
case 2: fragment=new ChannelListFragment();
Log.e("new instance ",position+"");
break;
case 3: fragment=new ChannelListFragment();
Log.e("new instance ",position+"");
break;
case 4: fragment=new ChannelListFragment();
Log.e("new instance ",position+"");
break;
case 5: fragment=new ChannelListFragment();
Log.e("new instance ",position+"");
break;
case 6: fragment=new ChannelListFragment();
Log.e("new instance ",position+"");
break;
}
return fragment;
}
@Override
public int getCount() {
return NUM_ITEMS;
}
}
私MainActivityで私はこれをやっています最初のページの位置0と位置1を作成した後、2番目のタブの位置2を作成し、3番目のタブの位置3、6番目のタブの位置4,5,6を作成します。スクロールバックでは4,3,2,1,0を作成し、最初のフラグメントは何も作成しません。これは、選択したタブに応じてデータを設定するときのアプリの機能に影響します。 ページャがアイテム0とアイテム6を含むページに1つのフラグメントを作成するように修正できますか?デフォルトでは
[ViewPager Fragmentのデータを更新](http://stackoverflow.com/questions/36503779/refresh-data-in-viewpager-fragment)の複製が可能です。基本的にViewPagerは、現在のFragmentとFragmentをどちら側にも保持します迅速なスワイプを滑らかに保つために生きています。それぞれのフラグメントがロードされたときに何かをする必要がある場合は、リンクされた答えに記述されているメソッドを使用します。 –