Android Viewpager内存不足?
首先,我没有得到任何错误。我的问题是在ViewPager中看不到第2页和第3页(共4页)。让我解释一下: 首先,我直接将页面添加到布局中,没有碎片: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
<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
只在前两页运行。(被打印0和1的InstanceItem()
所勾选)李>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); } }