load multiple tab contents in view pager without getting it again
Yes it's possible. My answer is not from an official source but it's from my previous experience.
Create your ViewPager as a member of the Activity:
private ViewPager pager;
Then inside onCreate()
method, initialize your ViewPager:
pager=(ViewPager)findViewById(R.id.pager);
Initialize your tablayout and and a tab selected listener:
tabLayout.addOnTabSelectedListener( new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { switch (tab.getPosition()) { case 0: pager.setCurrentItem(0,true); break; case 1: pager.setCurrentItem(1,true); break; case 2: pager.setCurrentItem(2,true); break; } } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { switch (tab.getPosition()) { case 0: pager.setCurrentItem(0,true); break; case 1: pager.setCurrentItem(1,true); break; case 2: pager.setCurrentItem(2,true); break; } } } );
Set the an adapter to your ViewPager:
pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
Create a private inner class MyPagerAdapter
that extends FragmentPagerAdapter
:
private class MyPagerAdapter extends FragmentPagerAdapter { private Tab1 tab1;private Tab2 tab2;private Tab3 tab3; //Tab1,Tab2,Tab3 representing your respective fragments public MyPagerAdapter(FragmentManager fm) { super(fm); //initialize all your fragments at once inside the constructor tab1=new Tab1(); tab2=new Tab2(); tab3=new Tab3(); } @Override public int getCount() { return 3; } @Override public android.support.v4.app.Fragment getItem(int position) {//Return each fragment according to a position switch (position) { case 0: return tab1; case 1: return tab2; case 2: return tab3; } return null; } }
That's how I handled my case. Good coding.