Android PagerAdapter类实例化项在onCreate中自动调用两次

Android PagerAdapter类实例化项在onCreate中自动调用两次,android,android-viewpager,android-pageradapter,Android,Android Viewpager,Android Pageradapter,我是viewpager的新手,我想使用viewpager创建视图,这里所有的东西都是动态的,所以我采用了这种方式,我的问题是InstanceItem在创建时会被调用两次。 一次创建 是否您的viewpager嵌套在依赖于其他视图的视图组中,例如设置了布局权重的线性布局或参照其他视图的相对布局,以便计算其高度和/或宽度?如果是这样,这可能是由于父视图的多个布局请求造成的,因为它依赖于其他视图。如果这是原因,请尝试优化布局。是否可能是您的viewpager嵌套在依赖于其他视图的视图组中,例如设置了布

我是viewpager的新手,我想使用viewpager创建视图,这里所有的东西都是动态的,所以我采用了这种方式,我的问题是InstanceItem在创建时会被调用两次。 一次创建


是否您的viewpager嵌套在依赖于其他视图的视图组中,例如设置了布局权重的线性布局或参照其他视图的相对布局,以便计算其高度和/或宽度?如果是这样,这可能是由于父视图的多个布局请求造成的,因为它依赖于其他视图。如果这是原因,请尝试优化布局。

是否可能是您的viewpager嵌套在依赖于其他视图的视图组中,例如设置了布局权重的线性布局或引用其他视图的相对布局,以计算其高度和/或宽度?如果是这样,这可能是由于父视图的多个布局请求造成的,因为它依赖于其他视图。如果这是原因,请尝试优化您的布局。

在查看页面创建下一个视图时调用它两次,并将其存储以从当前视图快速切换到下一个视图,基本上,它会为当前视图创建其左右元素,以便您可以向任何方向滚动页面,在起始页,因为并没有左边的页面,所以只调用了两次。
您还可以更改要创建和保留的视图的数量,但一般来说,我不确定但实际面对的情况是3,在查看页面创建下一个视图并存储它以快速从当前切换到下一个视图时,可以两次调用它,基本上,它为当前视图创建了左和右元素,这样你们就可以在起始页向任何方向滚动页面,因为并没有左页面,所以它只被调用了两次。
您还可以更改要创建和保留的视图的数量,但通常情况下,我认为不确定但有时实际面临的问题是3。解决此问题的另一种方法是覆盖getCount方法,该方法定义要在寻呼机中加载的元素数

 @Override
    public int getCount() {
       return NUMBER_OF_PAGES;
   }

解决此问题的另一种方法是重写getCount方法,该方法定义要在寻呼机中加载的元素数

 @Override
    public int getCount() {
       return NUMBER_OF_PAGES;
   }

请帮帮我伙计们嗨,有什么解决办法吗?请帮帮我伙计们嗨,有什么解决办法吗?这才是真正的原因。我有一个PageAdapter,它试图保存当前pos以从选择中获取资源。这是个坏主意,因为ViewPager总是提前缓存下一个视图。这就是我对此的证明。@Erum您无法更改此行为,但您可以在ViewPager的onPageChangeListner中调用特定片段的方法,因为您知道哪个片段出现在哪个位置。这就是这里的真正原因。我有一个PageAdapter,它试图保存当前pos以从选择中获取资源。这是个坏主意,因为ViewPager总是提前缓存下一个视图。这就是我对此的证明。@Erum您无法更改此行为,但您可以在ViewPager的onPageChangeListner中调用特定片段的方法,因为您知道哪个片段位于哪个位置。这是不正确的!ViewPager始终在init上调用适配器两次。对于位置0和1。缓存下一个视图并执行平滑过渡。在分页时,您将看到适配器总是在当前位置的下一个索引处被调用。我们不知道问题中调用两次是否意味着使用0和1调用,那么这是正常的ViewPager行为,或者使用0调用两次,那么这可能是布局问题,正如此答案所示。这是不正确的!ViewPager始终在init上调用适配器两次。对于位置0和1。缓存下一个视图并执行平滑过渡。在分页时,您将看到适配器总是在当前位置的下一个索引处被调用。我们不知道问题中调用两次是否意味着使用0和1调用,那么这是正常的ViewPager行为,或者使用0调用两次,那么这可能是一个布局问题,正如此答案所示。