android – 销毁ViewPager和FragmentStatePagerAdapter上的页面

android – 销毁ViewPager和FragmentStatePagerAdapter上的页面,第1张

概述我们正在尝试创建一个基于ViewPager的 Android应用程序,该应用程序在运行时接收添加和删除页面的指令.几乎像标签浏览器体验一样,您可以删除当前选项卡,或删除特定选项卡. 遵循Google文档,我们使用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()

@OverrIDepublic int getItemposition(Object object) {    return position_NONE;}

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

mAdapter.notifyDataSetChanged();
总结

以上是内存溢出为你收集整理的android – 销毁ViewPager和FragmentStatePagerAdapter上的页面全部内容,希望文章能够帮你解决android – 销毁ViewPager和FragmentStatePagerAdapter上的页面所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存