我遇到了cwac-pager的问题,我可以在PagerDemo演示项目中重现这个问题。
重现问题的步骤:
EditorFragment
页)如果您此时检查ArrayPagerAdapter中的entries
,您会看到它具有正确数量的PageDescriptor
,但有些PageDescriptor
具有相同的标记,例如“editor9”和“editor10”出现两次。似乎与这些PageDescriptor
对应的片段不会加载。
用于构建标记的演示项目中的代码(以及我的项目中的代码)只是简单地连接字符串和正在创建的片段的位置:
private String buildTag(int position) {
return("editor" + String.valueOf(position));
}
作为一种解决方法,我修改了buildTag
以构建随机标记:
private String buildTag(int position) {
return("page" + UUID.randomUUID().toString());
}
我不确定这种解决方法是否会产生意想不到的负面后果?
答案 0 :(得分:2)
你是对的,这是演示应用中的一个错误,ArrayPagerAdapter
可以在这里使用一些防御性编程来检测这种情况并引发异常。我会努力解决这两个问题。 PageDescriptor
需要一个唯一标记,而我当前的演示应用算法并不能保证,正如您所发现的那样。我已经为此提交了an issue。
在我的脑海中,UUID应该没问题,尽管我可能只是使用一个单调递增的整数计数器。
感谢您指出这一点!