当前位置: 首页 > 知识库问答 >
问题:

在另一个Viewpager内部的Viewpager中未调用片段setUserVisibleHint

戚正业
2023-03-14

我有一个有4个选项卡的ViewPager片段,在第4个选项卡中有另一个有3个选项卡的ViewPager,这样,如果每当我切换我的topviewPagerTab(一个有4个选项卡)时,就不会调用sub ViewPager(有3个选项卡)中的setUserVisiblehint片段。

boolean isPageVisible = false;

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    isPageVisible = isVisibleToUser;
}

共有1个答案

贲凌
2023-03-14
public class UserAdapter extends FragmentPagerAdapter
{
    private ArrayList<Fragment> fragments;

    public UserAdapter(FragmentManager fm, ArrayList<Fragment> fragments)
    {
        super(fm);
        this.fragments = fragments;
    }

    public void clearFragment()
    {
        fragments.clear();
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }


    public void setUserVisibleHint(boolean isUserVisibleHint)
    {
        if(viewPagerPojos != null && viewPagerPojos.size() > 0)
        {
            for(ViewPagerPojo viewPagerPojo : viewPagerPojos)
            {
                viewPagerPojo.getFragment().setUserVisibleHint(isUserVisibleHint);
            }
        }
    }

}

在每一个片段里

@Override
public void setUserVisibleHint(boolean isVisible) {
    super.setUserVisibleHint(isVisible);
    if (mAdaptor != null) {
     mAdaptor.setUserVisibleHint(isVisible);
    }
}

在子片段中

boolean isPageVisible;

@Override
public void setUserVisibleHint(boolean isVisibleHint) 
{
    isPageVisible = this.isVisible() && isVisibleHint;
    super.setUserVisibleHint(isPageVisible);
}
 类似资料:
  • 我想创建带有PagerView的片段,但运行以下代码会返回一个IllegalStateException: 源代码: IllegalStateException: 进程:com.company.user.blabla,pid:22256 java.lang.illegalstate异常:带有适配器的ViewPager com.company.user.blabla.fragments.homeFr

  • 在我的应用程序中,我有一个ViewPager,里面有很多可滑动的标签,里面有碎片。我使用方法检测何时出现在屏幕上。当用户在选项卡之间滑动时,这非常有效,但它在第一次加载时不起作用。要运行该方法中的代码,我必须向左滑动,然后返回到第一个,因为方法是在方法之前调用的。 你有任何想法,我如何运行这段代码后,第一个片段是可见的吗?中有方法吗?

  • 我正在使用开发一个应用程序。 这是我的活动: 我使用的FragmentStatePagerAdapter如下所示: }

  • 有没有什么好的方法来引用用创建的片段?或者我应该如何从我的活动(准确地说是从选项菜单)中刷新查看页中的片段?

  • 我有一个有3个选项卡的ViewPager。根据我所看到的情况,当容器活动开始时,前两个片段将处于恢复状态。我还注意到,只有并排的两个片段被恢复,第三个被停止。我遇到的问题是,我从网络加载数据用于第一个片段,并将自定义对象存储在一个ArrayList中,这很正常,但当我导航到第三个片段时,数据会随着第一个片段进入停止状态而丢失。因此,当从第三个片段导航回第一个片段时,ArrayList就会为空(我在

  • 我使用了和。 但它一次加载两个页面。 有什么方法可以在viewpager中只加载一个页面吗?