J'utilise le projet "Tabs + Swipe" et j'ai du mal à supprimer un fragment.Tabs + ViewPager + FragmentStatePagerAdapter - Comment supprimer fragment?
étapes que je fais:
- onglet Supprimer la base de données
- onglet Supprimer de la source de données FragmentStatePagerAdapter
- onglet Supprimer du actionbar.
- Supprimer le fragment à l'aide de Support FragmentManager.
Le problème: Après la supprimer exécutée de, pour une raison quelconque, je peux encore faire défiler vers la droite et voir un fragment vide. Je ne peux pas le sélectionner, il rebondit juste en arrière. Il semble que le fragment ne soit pas retiré, mais change sa position par rapport à l'étiquette de gauche.
Mon Adaptateur:
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new TabFragment();
Bundle args = new Bundle();
args.putInt(TabFragment.ARG_TAB_POSITION, position);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return tabsList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabsList.get(position).getTitle();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
FragmentManager manager = ((Fragment)object).getFragmentManager();
android.support.v4.app.FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment)object);
trans.commit();
}
}
Ma méthode remove (appelée à l'intérieur du fragment):
public void removeTab() {
mTabTableHandler.deleteTab(tab.getId()); //db
tabsList.remove(tabPosition); //data source
actionBar.removeTabAt(tabPosition); // actionbar
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit(); // support fragmentmanager
tabsList = mTabTableHandler.query(); //requery db
mSectionsPagerAdapter.notifyDataSetChanged(); //notify adapter
}
apprécie l'aide!
en effet une solution étrange. Merci :) –