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

在屏幕旋转时零售旧片段的ViewPager

丁长卿
2023-03-14

我使用ViewPagerFragmentStatePagerAdapter来显示片段。最初增加了2个片段,Fragment1和Fragment2,在接收到服务器的响应后,在第二个位置增加了第三个片段Fragment3。因此,在添加所有页面之后,这应该是ViewPager中的片段序列-->Fragment1,Fragment3,fragment2。

下面是解决方案代码

代码:

 @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Object obj = super.instantiateItem(container, position);
            Fragment fragment = mFragments.get(position);

            if((obj!=null && fragment!=null) && !(obj.getClass().getSimpleName().equals(fragment.clss.getSimpleName()))){
                destroyItem(container, position, obj);
                return super.instantiateItem(container, position);
            }else{
                return obj;
            }
        }

共有1个答案

南宫炜
2023-03-14

仅在FragmentpagerAdapter中重写此方法

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
       // TODO Auto-generated method stub
       super.destroyItem(ViewGroup container, int position, Object object);
}

然后从代码中移除super.destroyitem(ViewGroup容器、int位置、Object对象);

 类似资料:
  • 您好,我创建了一个带有默认“导航抽屉活动”的项目。所以我有一个MainActivity,其中有一个片段,用于替换菜单上的每个项目。 菜单之一是“客户”,显示客户列表。 从客户片段中我可以看到这个客户的利益,其中是一个调用利益的片段。 还有更多的层次,但要简短,这就足够了。 这是MainActivity上的代码,我使用它从片段中调用片段并在之间传递数据 我用的是: 问题是,当我旋转手机时,无论我的活

  • 在屏幕旋转后,虽然我在super.onCreate(null);,中传递null,但我得到了object返回的nullPointerException异常。我知道在传递savedInstanceState=null的同时必须销毁并重新创建活动,这意味着活动应该在旋转后开始,因为它是第一次开始,为什么在旋转后会出现此异常? onCreate()代码段,其中名为historyText的对象 Logca

  • 实现在竖屏的NavigationController中push一个横屏的UIViewController,模拟器测试兼容5.0、6.0系统。实现程序中手动旋转屏幕的效果。 [Code4App.com]

  • 我有这个活动,它包含一个片段。这个片段布局由一个包含多个片段(实际上是两个)的视图寻呼机组成。 当创建视图分页器时,它的适配器被创建,被调用,我的子片段被创建。太棒了。 现在,当我旋转屏幕时,框架处理片段的重新创建,适配器从主片段在我的中再次创建,但是从未被调用,因此我的适配器持有错误的引用(实际上为空),而不是两个片段。 我发现片段管理器(即子片段管理器)包含一个名为的片段数组,这当然是代码无法

  • 在我的应用程序中,我有一个ViewPager,里面有很多可滑动的标签,里面有碎片。是否有像这样的方法,每次片段出现在屏幕上时都会调用它?等是在创建片段之后调用的,而不是在片段出现在屏幕上时调用的,因此它们对我不起作用。我的问题可以用哪种方法?

  • 我有一个应用程序小部件,当它更新时,获取具有与小部件匹配的维度的图像,并将该图像放入(通过)。它工作得很好。 但是对于支持主屏幕旋转的设备(我不是说基于设备方向的