我很难从配置更改中恢复ViewPager
。
我想要的是保存当前的寻呼机位置,以便在配置更改后可以看到相同的页面。为此,我pager.getCurrentItem()
使用pager.setCurrentItem
. 只是这不起作用:setCurrentItem
实际上尝试重新创建该页面而不是选择它!即使页面已经创建。
现在我不确定在实现支持它的适配器时是否遗漏了一些东西,但是是否存在陷阱setCurrentItem
以及何时ViewPager
认为它已完全构建?但是,查看该函数的代码,这对我来说毫无意义;它似乎总是尝试重新创建一个页面,除非根本没有项目:
void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) {
// these are the only checked that make this method return
if (mAdapter == null || mAdapter.getCount() <= 0) {
setScrollingCacheEnabled(false);
return;
}
if (!always && mCurItem == item && mItems.size() != 0) {
setScrollingCacheEnabled(false);
return;
}
// ... removed some init code
mCurItem = item;
populate();
// ...
}
如您所见,populate()
始终调用,除非根本没有项目,或者您尝试选择的项目已被选中。是什么赋予了?这对我来说没有意义。