Ich benutze das Projekt "Tabs + Swipe" und es fällt mir schwer, ein Fragment zu entfernen.Tabs + ViewPager + FragmentStatePagerAdapter - Wie Fragment zu entfernen?
Schritte ich tue:
- Entfernen Registerkarte Datenbank
- Entfernen Registerkarte aus der FragmentStatePagerAdapter Datenquelle
- Entfernen Registerkarte aus dem ActionBar.
- Fragment mit dem Support FragmentManager entfernen.
Das Problem: Nachdem ich das Entfernen aus irgendeinem Grund durchführen, kann ich immer noch nach rechts scrollen und ein leeres Fragment sehen. Ich kann es nicht auswählen, es springt einfach zurück. Es scheint, als ob das Fragment nicht entfernt wird, sondern seine Position zum Tag von links ändert.
Mein Adapter:
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();
}
}
Meine Methode remove (aus dem Fragment genannt):
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
}
die Hilfe zu schätzen wissen!
in der Tat eine seltsame Lösung. Vielen Dank :) –