android - 为什么在位置 ==2 时调用 destroyItem? android pagerAdapter

标签 android

我有一个非常简单的 PagerAdapter,出于某种原因,它删除了位置 0 的 View 并 1 当它滚动到位置 2 时。

具体来说,当我第一次运行应用程序时,有 3 个 View 。我滚动到位置 2,位置 1 的 View 将消失。 View 0 仍然存在。如果我滚动到 View 0 并返回到 View 2,然后再次返回到 View 0,则 View 0 会突然消失。我再次这样做,我实际上可以看到 View 0 被实例化并立即被销毁。

这是怎么回事?

主要 Activity

public class MainActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final MyPagerAdapter adapter = new MyPagerAdapter(this);
        final ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(1);
}


public class MyPagerAdapter extends PagerAdapter {

private Context ctx;
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
ViewGroup collection;

public MyPagerAdapter (Context ctx){
    this.ctx = ctx ;
}


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

public Object instantiateItem(ViewGroup container, int position ){
    this.collection = (ViewPager)container;
    NewMonth monthObject = new NewMonth(ctx, month+position-1,2012);
    View monthLayout = monthObject.newParentLayout;
    collection.addView(monthLayout);
    return monthLayout;
    return addViewAt(position);
    }


@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
    collection.removeViewAt(position);
}


 @Override
     public Parcelable saveState() {
     return null;
     }


@Override
public boolean isViewFromObject(View view, Object arg1) {
    return view==arg1;
}
}

最佳答案

您必须在内存中维护所有选项卡,将 OffscreenPageLimit 指定为 N-1,在您的情况下将其放在 onCreate 方法中:

myPager.setOffscreenPageLimit(2);

关于android - 为什么在位置 ==2 时调用 destroyItem? android pagerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539961/

相关文章:

Android对齐布局中心

android - 如何让 android 删除旧的 native 库?

android - 如何在android源代码的所有子目录中列出多个git中修改的文件?

Android,setonclicklistner 动态生成 TextView 数组

android - 实现一个简单的 Dagger2 示例

java - 如何使 "swipe up"功能像许多自定义启动器一样?

android - 使用 Dagger 2 DI,替换构建组件上的子组件

Android Studio Gradle 同步失败 : Configuration with name 'default' not found

android - 如何国际化 ic_launcher 图标?

android - 无法立即获取 Firebase 数据