Replacing A Fragment In A View Pager
I am trying find a solution simular this https://stackoverflow.com/a/13925130/1634451 but the poster didn't explain what R.id.products_list_linear is. I tried to set R.id.products_
Solution 1:
Replace Fragments Within a View Pager
Try this customized ViewPager Adapter,..
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.ViewGroup;
publicclassViewPagerAdapterextendsFragmentStatePagerAdapter {
privateList<Fragment> fragments=null;
privateFragmentManager fragmentManager=null;
publicViewPagerAdapter(FragmentManager fragmentManager,List<Fragment> fragments) {
super(fragmentManager);
this.fragments=fragments;
this.fragmentManager=fragmentManager;
}
@OverridepublicFragmentgetItem(int position) {
return fragments.get(position);
}
@Overridepublic int getCount() {
return fragments.size();
}
@OverridepublicvoidsetPrimaryItem(ViewGroup container, int position, Objectobject)
{
super.setPrimaryItem(container,0,object);
}
@OverridepublicvoidnotifyDataSetChanged()
{
super.notifyDataSetChanged();
}
@OverridepublicvoiddestroyItem(ViewGroup collection, int position, Object view) {
fragmentManager.executePendingTransactions();
fragmentManager.saveFragmentInstanceState(fragments.get(position));
}
publicvoidreplaceItem(int position,Fragment fragment)
{
fragments.set(position, fragment);
this.notifyDataSetChanged();
}
}
call it from activity with fragment as arguments,
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, Fragment1.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment2.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment3.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment4.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment5.class.getName()));
mPagerAdapter=new ViewPagerAdapter(getFragmentManager(), fragments);
When you replace view/fragment inside of viewPager then use,
mPagerAdapter.replaceItem(2,Fragment.instantiate(this, Fragment5.class.getName()));
Solution 2:
I ended up going with a different approach that worked out nicely for me. I used a ViewSwitcher for the fragment in the viewpager.
Post a Comment for "Replacing A Fragment In A View Pager"