gpt4 book ai didi

android - 调用 setCurrentItem(0) 时不会触发 onPageSelected

转载 作者:IT老高 更新时间:2023-10-28 13:23:15 28 4
gpt4 key购买 nike

我有一个带有 ViewPager 的 Activity,它显示一堆图片。当它启动时,ViewPager 的位置是根据用户在前一个 Activity 中选择的内容设置的。类似于画廊。

我希望每次选择新页面时都调用 onPageSelected,即首次打开 Activity 或用户滑动到新页面时。

我这样设置起点:

 mPager.setCurrentItem(index);

一切正常,除非调用 setCurrentItem 并将索引设置为 0,因为这不会触发 onPageSelected。

mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int index) {
Log.d(TAG, "onPageSelected " + index);
}
...
}

所以我的问题是;这是一个错误吗?如果是,我该怎么办?

最佳答案

到目前为止,我发现的最干净的解决方案是引用您在 ViewPager 上设置的 onPageChangeListener(因为我认为没有 ViewPager.getOnPageChangeListener() 方法),然后在您设置之后ViewPager 的适配器,调用:

onPageChangeListener.onPageSelected(viewPager.getCurrentItem());

但是,当前索引处的页面 fragment 还没有被实例化(至少如果您使用的是 FragmentStatePagerAdapter),因此您可能需要将它包装在一个可运行的文件中,ala:

viewPager.post(new Runnable(){
@Override
public void run() {
onPageChangeListener.onPageSelected(viewPager.getCurrentItem());
}
});

此外,如果在 onPageSelected 处理程序中需要对 fragment 的引用,则必须自己进行。我为我的 FragmentStatePagerAdapter 使用了一个抽象基类,它覆盖了实例化和销毁方法,并从 SparseArray 添加/删除了 fragment 。

关于android - 调用 setCurrentItem(0) 时不会触发 onPageSelected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794269/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com