android – 销毁ViewPager和FragmentStatePagerAdapter上的页面

前端之家收集整理的这篇文章主要介绍了android – 销毁ViewPager和FragmentStatePagerAdapter上的页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在尝试创建一个基于ViewPager的 Android应用程序,该应用程序在运行时接收添加删除页面的指令.几乎像标签浏览器体验一样,您可以删除当前选项卡,或删除特定选项卡.

遵循Google文档,我们使用FragmentStatePagerAdapter,这是在有大量页面的情况下使用的,更像列表视图.

但是当我们试图:
删除不在屏幕上的页面
– 并从同一个类创建一个新的片段对象
– 并删除页面的相同位置
我们注意到,Android平台恢复了死板,并向用户显示.我们刚刚创建的新对象根本不运行“onCreate”,“onCreateView”或“onActivityCreated”.

我们正在寻找解决这个问题的方法,迫使平台使用同一个类中的新的片段对象.有任何想法吗?

我们发现,如果我们销毁当前页面,平台确实销毁了该页面,并从同一个类创建了一个新的对象.这是一个复制问题和这种行为的小例子.

资料来源:http://dl.dropbox.com/u/8333012/SimpleAdapter/SimplePager.zip

视频:http://www.youtube.com/watch?v=-oaXXwU8PSI&hd=1

当您触摸第一页上的TextView时,该项目旨在将第二页(绿色)移除到新的蓝页.你会看到,即使这样做从第一页第二页仍然是绿色.但是当您按第二页上的后退Android按钮(绿色)并触摸TextView时,创建的第二个页面将是正确的蓝色.

解决方法

当您处理ListView并更改适配器的底层数据时,调用notifyDataSetChanged(),并且反映数据集的任何视图将刷新自身.这是你应该用碎片寻呼机适配器的方式.

在您的情况下,您不通知适配器.但是,在FragmentPagerAdapter / FragmentStatePagerAdapter的情况下,由于这些适配器默认忽略notifyDataSetChanged()“,因此没有任何区别.为了使其工作覆盖您的适配器实现中的getItemPosition()

@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}

正如已经说过的,你添加/删除片段后调用(在你的showOtherPage()中)

mAdapter.notifyDataSetChanged();
原文链接:https://www.f2er.com/android/310988.html

猜你在找的Android相关文章