I have two fragments.
1) A fragment with just a TextView(OneFragment)
2) A fragment with a recycler view who's contents are being populated in the onCreateView() of the Fragment (Two Fragment)
In the Activity class I use a viewPager to control these fragments!!
However I'm faced with the problem.
The onCreateView() method of the TwoFragment is called when the activity is first loaded! When I go to the other fragments and return back to the Two Fragment the onCreateView() method is not called.
Instead of showing me a recyclerView it renders a blank screen ! However when I change my orientation of the device! The onCreateView() is called and and the list is populated!
I want it to show the TwoFragment while returning back to it.
However the OneFragment has no problems of this ! Any time I return to it, The normal big textView is shown!
Here is the Code for my ViewPager Adapter
class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getItemPosition(Object object){
// return PagerAdapter.POSITION_NONE;
Fragment f = (Fragment) object;
for(Fragment frag: mFragmentList){
return frag.getTagInt();
}
return FragmentStatePagerAdapter.POSITION_NONE;
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
public void clearAll(){
mFragmentList.clear();
mFragmentTitleList.clear();
notifyDataSetChanged();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
And I set The ViewPager adapter like this :
private void setupViewPager(ViewPager viewPager,int choice) {
if(choice == 1){
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.clearAll();
adapter.addFragment(new OneFragment(), "One");
adapter.addFragment(new TwoFragment(), "Two");
viewPager.setAdapter(adapter);
}
else{
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.clearAll();
adapter.addFragment(new OneFragment(), "One");
adapter.addFragment(new OneFragment(), "Two");
viewPager.setAdapter(adapter);
}
}
and here's my previous getItemId()
@Override
public int getItemPosition(Object object){
// return PagerAdapter.POSITION_NONE;
Fragment f = (Fragment) object;
for(int i=0;i<getCount();i++){
Fragment fragment = getItem(i);
if(f.equals(fragment)){
return i;
}
}
return FragmentStatePagerAdapter.POSITION_NONE;
}
Any kind of help is Much Appreciated ! Cause I'm kinda stuck after going through the web and stackOverflow!!