2016-09-22 4 views
0

, когда я перехожу на другую вкладку, каждый раз, когда вы ее создаете. подводит TABNAME и CATID от сервера,как сохранить экземпляр фрагмента представления пейджера в android

private void setTabTitle() { 
    Final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); 

mviewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager())); 
viewPager.setOffscreenPageLimit(jSonTab.size()); 
    tabLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      tabLayout.setupWithViewPager(mviewPager); 

      tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
       @Override 
       public void onTabSelected(TabLayout.Tab tab) { 
        mviewPager.setCurrentItem(tab.getPosition());  // Get current clicked Tab Position 


       } 

       @Override 
       public void onTabUnselected(TabLayout.Tab tab) { 
       } 

       @Override 
       public void onTabReselected(TabLayout.Tab tab) { 
       } 
      }); 
     } 
    }); 
} 
public Parcelable saveState() { 
    return null; 
} 
class ViewPagerAdapter extends FragmentStatePagerAdapter { 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 

    return MainFragment.newInstance(CatId.get(position), tabName.get(position)); 

} 

    @Override 
    public int getCount() { 
     return tabName.size(); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 

     return tabName.get(position); 
    } 
} 

, когда я изменить что-либо в первой вкладке и перейдите anyother вкладки, первая закладка освежает и создают новый экземпляр, каждый раз звоню сервер для извлечения деталей для конкретного tab

ответ

0

Попробуйте настроить viewPager.setOfscreenPagelimit (noOfPagesInViewPager);

класс ViewPagerAdapter расширяет FragmentStatePagerAdapter { Mainfragment mainfragment;

public ViewPagerAdapter(FragmentManager manager) { 
    super(manager); 
    mainfragment=new Mainfragment(); 
} 

@Override 
public Fragment getItem(int position) { 

    return mainfragment(CatId.get(position), tabName.get(position)); 

}

@Override 
public int getCount() { 
    return tabName.size(); 
} 

@Override 
public CharSequence getPageTitle(int position) { 

    return tabName.get(position); 
} 

}

Смежные вопросы