我使用选项卡+刷卡的项目,我有困难的时候删除片段。
I'm using the "Tabs + Swipe" project and I'm having a difficult time removing a fragment.
步骤我做的:
从数据库中删除标签 从FragmentStatePagerAdapter数据源中删除标签 从动作条中删除选项卡。 在使用支持FragmentManager删除片段。的问题: 之后我进行了删除,出于某种原因,我仍然可以滚动到右侧,看到一个空的片段。我无法选择它,它只是反弹。 好像没有被删除的片段,而是从左边改变其位置标记。
The problem: After I perform the remove, for some reason, I can still scroll to the right and see an empty fragment. I can't select it, it just bounces back. It seems like the fragment is not being removed but rather changes its position to the tag from the left.
我的适配器:
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
}
鸭preciate的帮助!
Appreciate the help!
您可以在这里找到答案 - Remove信息段从ViewPager在Android的
you can find the answer here - Remove Fragment Page from ViewPager in Android
好像缺少什么在你的code为覆盖以下适配器的方法:
it seems what missing in your code is overwriting of the following adapter's method:
@Override
public int getItemPosition(Object object){
return PagerAdapter.POSITION_NONE;
}
解释为什么这样怪异的解决方案的工作,你可以在回答中我只要你的链接的问题找到。
explanation why such "weird" solution works you can find in the answer to the question in the link I provided you.