当前位置: 首页 > 知识库问答 >
问题:

选项卡+ViewPager+FragmentStatePagerAdapter-如何删除Fragment?

鄢子平
2023-03-14

我正在使用“tabs+swipe”项目,我很难删除一个片段。

我正在做的步骤:

  1. 从数据库中删除选项卡
  2. 从FragmentStatePagerAdapter数据源中删除选项卡
  3. 从操作栏中删除选项卡。
  4. 使用支持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
        }

感谢你的帮助!

共有1个答案

王高超
2023-03-14

你可以在这里找到答案--在Android中从ViewPager中删除片段页面

您的代码中似乎缺少的是覆盖以下适配器的方法:

@Override
public int getItemPosition(Object object){
    return PagerAdapter.POSITION_NONE;
}

解释为什么这样“奇怪”的解决方案工作,你可以在我提供给你的链接中找到问题的答案。

 类似资料:
  • 围绕这个话题有相当多的讨论 ViewPager PagerAdapter未更新视图 动态更新ViewPager? 从FragmentStatePagerAdapter删除片段 结果是 要么我得到一个空白页(意味着片段已销毁,但未调用)进行替换) 或者整个系统崩溃,可能是因为Android管理碎片实例的方式与我在中保存它们的方式不匹配 这是我的适配器 谢谢!

  • 我使用ViewPager作为主布局,对于单个寻呼机视图,我使用Fragments。选项卡是操作栏的一部分。我想使用操作栏中的刷新按钮刷新当前选项卡。 我的MainActivity.java 这是我的一个Tabs StartPage.java

  • 我有一个复杂的UI设置,如下所示: 谢谢你。

  • 我遇到的问题是,我需要完全删除中保存的一些。 我已经对它进行了修复,但是旧的片段似乎仍然完好无损。 建筑施工

  • 本文向大家介绍Android基于ViewPager Fragment实现选项卡,包括了Android基于ViewPager Fragment实现选项卡的使用技巧和注意事项,需要的朋友参考一下 先给大家展示效果图: 1.新建TestFragmen继承Fragment 2.MyFragmentPagerAdapter继承FragmentPagerAdapter 3.MainActivity 要继承Fr

  • 本文向大家介绍Android ViewPager实现选项卡切换,包括了Android ViewPager实现选项卡切换的使用技巧和注意事项,需要的朋友参考一下 本文实例介绍了ViewPager实现选项卡切换,效果图如下: 步骤一:这里使用兼容低版本的v4包进行布局,这里eclipse没有输入提示,所以要手动输入,文件名称“activity_main.xml” 步骤二:选项卡中的内容都是从布局文件中