首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定FragmentStatePagerAdapter中的片段是否为当前页

如何确定FragmentStatePagerAdapter中的片段是否为当前页
EN

Stack Overflow用户
提问于 2016-08-31 08:08:09
回答 2查看 73关注 0票数 0

FragmentStatePagerAdapter(简称FSPA)具有预加载机制.

我们假设FSPA中的A,B和C片段

当用户选择A片段时,B片段将被预加载,B片段中的某些内容不希望被执行,因为B不是当前的片段。

云如何确定片段是否是当前选择的片段用户?

代码片段无法解释我想做什么,所以我删除了它

请将我的问题更新如下:

假设

  1. 在viewPager中有三个片段A,B,C
  2. 片段A是用户第一个可见的片段。
  3. 如果用户可以看到片段A,则启动电子票证事务
  4. 在其他页面中(片段A除外),我们需要停止电子票务事务。

问题:查看器中的预加载片段A将导致用户看不到电子票证的存在,但电子票证启动事务

想要做的事情:片段A的视图是电子票据,所以事务只能在片段A中启动,在其他片段中停止。

附注:“开始”和“停止”电子票据事务属于片段类.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-31 09:02:34

您可以将一个onPageChangeListener添加到您的查看器中,在onPageSelected(int position)中,您可以获得当前的片段。

代码语言:javascript
复制
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
             Fragment currentFragment=new MyViewPagerAdapter().getItem(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

“用户选择”是指在屏幕上点击或可见?

票数 0
EN

Stack Overflow用户

发布于 2016-08-31 09:07:20

您可以使用setUserVisibleHint方法。

代码语言:javascript
复制
 @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
if(isVisibleToUser){
... your code
}
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39244059

复制
相关文章

相似问题

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