我们正在创建一个基于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时,创建的第二页将是正确的蓝色。
按照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时,创建的第二页将是正确的蓝色。