[q][solved]View Pager doesnt adds fragments to backstack

Search This thread

arpitkh96

Senior Member
Feb 17, 2012
1,156
645
27
panipat
i have made a fragment which contains view pager.it uses list of fragments so that fragments can be added or removed dynamically.
each child fragment of viewpager is a listfragment and loads list using asynctask
now my problem is when i have 3-4 child fragments in view pager,after switching to other pages(tabs),the earlier ones in which list is already loaded are reset automatically when i swipe back to them.so i want that they must be added to backstact so that they can be resumed.
Code:
public class TabFragment extends android.support.v4.app.Fragment {
List fragments = new ArrayList();
public PagerAdapter mSectionsPagerAdapter;


ViewPager mViewPager;

String home;
ActionBar actionBar;
 [user=439709]@override[/user]
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.tabfragment,
container, false);
mSectionsPagerAdapter = new ScreenSlidePagerAdapter(getChildFragmentManager());
mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
actionBar = getActivity().getActionBar();

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

public void onPageScrolled(int p1, float p2, int p3) {
// TODO: Implement this method
}

public void onPageSelected(int p1) { // TODO: Implement this// method
Main ma = ((Main) fragments.get(p1));
if (ma.current != null) {
ma.bbar(ma.current);
}
}

public void onPageScrollStateChanged(int p1) {
// TODO: Implement this method
}
});

mViewPager.setAdapter(mSectionsPagerAdapter);
return rootView;
}


private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

 [user=439709]@override[/user]
public CharSequence getPageTitle(int position) {
//Toast.makeText(getActivity(),""+position,Toast.LENGTH_SHORT).show();
Main ma = ((Main) fragments.get(position));
            return new File(ma.current).getName();
}

public int getCount() {
// TODO: Implement this method
return fragments.size();
}

public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}

 [user=439709]@override[/user]
public android.support.v4.app.Fragment getItem(int position) {
android.support.v4.app.Fragment f;
f = fragments.get(position);
return f;
}

}
public void removePage(int position) {
if(position==0){Toast.makeText(getActivity(),"Main Screen Cant be removed",Toast.LENGTH_LONG).show();}else{
       fragments.remove(position);
mSectionsPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(position-1);
}

}

public void add(String text) {
android.support.v4.app.Fragment main = new Main();
Bundle b = new Bundle();
int p = fragments.size();
b.putString("path", text);

b.putInt("pos", p);

main.setArguments(b);

fragments.add(main);
mSectionsPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(p);

}
 
Last edited: