首先,我没有收到任何错误。我的问题是我在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>
我这样做是为了简单。现在我将寻呼机适配器加载到活动:
WizardPagerAdapter adapter = new WizardPagerAdapter();
ViewPager pager = (ViewPager) findViewById(R.id.drawerPager);
pager.setAdapter(adapter);
当然定义WizardPagerAdapter
。您将在下面看到destroyItem()
什么也不做,instantiateItem()
只返回id找到的视图。这是我基于this SO question的代码:
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);
}
}
正如我之前所说,使用此代码,我只能在第0页和第0页中看到等效的RelativeLayouts。 1但是第2页和第2页3总是空的。
instantiateItem()
只运行前两个。 (由System.out.println(position);
打出,打印0&amp; 1)。 答案 0 :(得分:0)
很可能因为viewpager默认只缓存了2个页面
您可以使用:pager.setOffscreenPageLimit(X);
其中&#39; X&#39;是页数。