Android Viewpager内存不足?

Android Viewpager内存不足?,android,android-viewpager,android-view,android-pageradapter,Android,Android Viewpager,Android View,Android Pageradapter,首先,我没有得到任何错误。我的问题是在ViewPager中看不到第2页和第3页(共4页)。让我解释一下: 首先,我直接将页面添加到布局中,没有碎片: <android.support.v4.view.ViewPager android:id="@+id/drawerPager" android:layout_width="match_parent" android:layout_height="match_parent" > <Relative

首先,我没有得到任何错误。我的问题是在ViewPager中看不到第2页和第3页(共4页)。让我解释一下:

首先,我直接将页面添加到布局中,没有碎片:

<android.support.v4.view.ViewPager
    android:id="@+id/drawerPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/page_start_one"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

        //3 textviews, 1 imageview
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/page_start_two"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

        //1 textview, 1 imageview
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/page_start_three"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

        //1 textview, 1 imageview
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/page_start_four"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

        //3 textviews, 1 button
    </RelativeLayout>
</android.support.v4.view.ViewPager>
当然,还要定义
向导PageRadapter
。您将在下面看到,
destroyItem()
什么也不做,而
InstanceItem()
只是返回视图,其中包含id。这是我基于的代码:

正如我之前所说,使用这段代码,我只能在第0页和第1页看到等价的RelativeLayouts,但是第2页和第3页总是空的

  • 你知道为什么会这样吗
  • 是因为内存限制吗
  • 或者我的另一个假设是,第2页和第3页从未膨胀过,因为onCreate
    InstanceItem()
    只在前两页运行。(被打印0和1的
    System.out.println(位置);
    所勾选)
      这可能是因为默认情况下,viewpager只缓存2页

      您可以使用以下命令进行更改:
      pager.setOffscreenPageLimit(X)

      其中“X”是页数

      WizardPagerAdapter adapter = new WizardPagerAdapter();
      ViewPager pager = (ViewPager) findViewById(R.id.drawerPager);
      pager.setAdapter(adapter);
      
      class WizardPagerAdapter extends PagerAdapter {
      
          public RelativeLayout instantiateItem(View collection, int position) {
      
              System.out.println(position);
              int resId = 0;
              switch (position) {
              case 0:
                  resId = R.id.page_start_one;
                  break;
              case 1:
                  resId = R.id.page_start_two;
                  break;
              case 2:
                  resId = R.id.page_start_three;
                  break;
              case 3:
                  resId = R.id.page_start_four;
                  break;
              }
      
              return (RelativeLayout) findViewById(resId);
          }
      
          @Override
          public void destroyItem(ViewGroup collection, int position, Object view) {
          }
      
          @Override
          public int getCount() {
              return 4;
          }
      
          @Override
          public boolean isViewFromObject(View arg0, Object arg1) {
              return arg0 == ((View) arg1);
          }
      }