I have 50 fragments with at least 20 components in each one. I'm experiencing a delay (lag) when switching tabs, even though I've used this statement:
viewpager.setOfscreenPageLimit(2)
but it didn't work. I tried to initialize the tablayout with the fragments in a different thread (apart from the UI thread), like this:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
// Add Fragments
// Here there are 50 fragments, but I added just 2
//fragments for simplicity
//region Phase Five
adapter.addFragment(new PhaseFiveTestTwoFragment(), "");
adapter.addFragment(new LessonOneFragment(), "");
//endregion
viewPager.setOffscreenPageLimit(2);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
}, 100);
But, I still had a lag when switching tabs.
This is an example of how many components I have:
Any help will be appreciated.
Don't use Handler for this one. You really don't need to set up a delay for this
Use this as your ViewPagerAdapter (Which is just a standard ViewPager Adapter Structure):
private class ViewPagerAdapter extends FragmentPagerAdapter { private final List < Fragment > mFragList = new ArrayList < > (); public ViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mFragList.get(position); } @Override public int getCount() { return mFragList.size(); } public void addFragmentI(Fragment fragment) { mFragList.add(fragment); } private void removeFragmentI(Collection < Fragment > fragment) { mFragList.removeAll(fragment); } }
And for setting Adapter Use something like This:
Fragment[] frags = { new Fragment1(), new Fragment2(), new Fragment3(), new Fragment4(), new Fragment5() }; for (int i = 0; i < tabCount; i++) { pagerAdapter.addFragmentI(frags[i]); } mViewPager.setAdapter(pagerAdapter); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.setTabGravity(TabLayout.GRAVITY_CENTER); mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
This must work without a glitch. Keep your Fragments Light as well
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.