"Tabs + Swipe"プロジェクトを使用していますが、断片を削除するのが難しいです。 FragmentStatePagerAdapterデータソースからデータベース Tab + ViewPager + FragmentStatePagerAdapter - フラグメントを削除するには?
- 削除]タブ
- アクションバーから削除]タブを:私はやっている
手順。
- Support FragmentManagerを使用してフラグメントを削除します。
問題: 私は削除を実行した後、何らかの理由で、私はまだ右にスクロールして、空の断片を見ることができます。私はそれを選択することはできません、それはちょうど戻ってバウンス。 フラグメントが削除されていないように見えますが、その位置は左からタグに変わります。
マイアダプタ:
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();
}
}
(フラグメント内から呼び出された)私のremoveメソッド:
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
}
は助けに感謝します!
確かに奇妙な解決策です。ありがとう:) –