无法更新View Pager中的中间片段。

rze*_*nks 5 java android fragment android-fragments android-viewpager

我一直在研究带有3个标签的TAB布局。

我的问题是我无法更新,请刷新页面之间的第二个选项卡。

根据我的调试,我从选项卡一个滑动到第二个,在getItem(int位置)调用了第三个,类似地,一个片段从第三个选项卡滑动到了第二个。

viewpager 的默认getOffscreenPageLimit1。我什至无法将其设置为零计数。

在getItem处,位置一开始是1,但是一旦我滑动页面,它只会调用位置0和2。从不调用1。

@Override
public Fragment getItem(int position) {
    return mFragmentList.get(position);
}
Run Code Online (Sandbox Code Playgroud)

这是我的ViewPagerSetUp

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new 
ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new InvitedFragment(), "Invited");
    adapter.addFragment(new InterestedFragment(), "Interested");
    adapter.addFragment(new AttendingFragment(), "Attending");
    viewPager.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)

这是我的ViewPager

 class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

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

    public void refreshFragment(int position) {
        mFragmentList.get(position).onResume();
    }

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

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}
Run Code Online (Sandbox Code Playgroud)

addOnPageChangeListener是一个选项,但我也无法使用pageChangelistener刷新它。

我该如何治愈offpagepagelimit?如何刷新每滑动页面上的每个标签?

谢谢。

Pra*_*pta 4

尝试这个,

重写fragment中的以下方法。当fragment可见时调用

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        //do your Stuffs
    }
}
Run Code Online (Sandbox Code Playgroud)