首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有非唯一标记的ViewPager (cwac-寻呼机)页未正确初始化

具有非唯一标记的ViewPager (cwac-寻呼机)页未正确初始化
EN

Stack Overflow用户
提问于 2014-04-21 13:11:08
回答 1查看 130关注 0票数 0

我在cwac寻呼机上遇到了一个问题,我可以在PagerDemo演示项目中重现这个问题。

复制这一问题的步骤:

  1. 运行PagerDemo项目(它初始化10个EditorFragment页面)
  2. 删除第2-8页(导航到第2页,并按下删除,直到你留在编辑器#9)
  3. 现在有3个片段:编辑器#1、编辑器#9和编辑器#10。
  4. 按+键添加页面。它从添加编辑器#4开始(很明显,因为在删除之后还有3页)。添加页面,直到添加到编辑器#10 (在当前页面的左侧可见)。
  5. 右击编辑器#9。视图不加载(没有编辑文本供您编辑)。编辑器#10 (在右边)是相同的。向左滑动到新的编辑器#9或编辑器#10到编辑器#1的左边,这些视图已经正确加载。

如果此时检查ArrayPagerAdapter中的ArrayPagerAdapter,您将看到它具有正确的PageDescriptors数,但有些PageDescriptors具有相同的标记,例如"editor9“和"editor10”两次出现。与这些PageDescriptor对应的片段似乎不加载。

示例项目(以及我的项目中类似的代码)用于构建标记的代码简单地连接一个字符串和正在创建的片段的位置:

代码语言:javascript
运行
复制
private String buildTag(int position) {
    return("editor" + String.valueOf(position));
}

作为解决办法,我修改了buildTag以构建一个随机标记:

代码语言:javascript
运行
复制
private String buildTag(int position) {
    return("page" + UUID.randomUUID().toString());
}

我不确定这种解决办法是否会产生意想不到的负面后果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 13:18:42

这是演示应用程序中的一个bug,这是正确的,ArrayPagerAdapter可以在这里使用一些防御性编程来检测这种情况并引发异常。我会努力解决这两个问题。PageDescriptor需要一个唯一的标签,而我当前的演示应用程序算法无法保证这一点,正如您所发现的。我已经为此申请了问题

从头顶上看,UUID应该没问题,不过我可能只会使用一个单调递增的整数计数器。

谢谢你指点这个!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23198158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档