[英]Not able to update middle fragment in View Pager.
I've been working on a TAB layout with 3 tabs. 我一直在研究带有3个标签的TAB布局。
My problem is I'm unable to update,refresh 2nd tab swiping between the pages. 我的问题是我无法更新,请刷新页面之间的第二个选项卡。
As per my debugging I swipe from tab one to second, the third is being called at getItem(int position), similarly fragment one is being called swiping from third tab to second. 根据我的调试,我从选项卡一滑到第二个,在getItem(int位置)调用了第三个,类似地,一个片段从第三个选项卡滑到了第二个。
The default getOffscreenPageLimit of viewpager is 1 . viewpager的默认getOffscreenPageLimit为1 。 I couldn't even set it to zero count.
我什至无法将其设置为零计数。
At getItem, position is 1 at the very beginning but as soon as I swipe page, it only calls position 0 and 2. 1 is never called. 在getItem处,位置一开始是1,但是一旦我滑动页面,它只会调用位置0和2。从不调用1。
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
This is my ViewPagerSetUp 这是我的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);
}
This is my ViewPager 这是我的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);
}
}
addOnPageChangeListener was one option but I couldn't refresh it using pageChangelistener too. addOnPageChangeListener是一个选项,但我也无法使用pageChangelistener刷新它。
How can I cure offscreenpagelimit ? 我该如何治愈offpagepagelimit? How can I refresh every tab on every page swipe?
如何刷新每滑动页面上的每个标签?
Thank you. 谢谢。
Try this, 尝试这个,
Override the below method in fragment.It call when fragment is visible 覆盖fragment中的以下方法,当可见fragment时调用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//do your Stuffs
}
}
add this in your activity 将此添加到您的活动中
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager.getAdapter().notifyDataSetChanged();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
in your adapter add this, 在您的适配器中添加它,
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
you have to add View Pager into tabLayout if you not added then try this code: 如果未添加,则必须将View Pager添加到tabLayout中,然后尝试以下代码:
tabLayout.setupWithViewPager(viewPager);
also you are calling Parent Fragment(super) onResume Method in refreshFragment method you have to call SubFragment onResume method : 您也要在refreshFragment方法中调用Parent Fragment(super)onResume方法,则必须调用SubFragment onResume方法:
mInvitedFragment.onResume();
mInterestedFragment.onResume();
mAttendingFragment.onResume();
You can use below method for refresh second fragment.Put this method in the fragment. 您可以使用以下方法刷新第二个片段。将此方法放入片段中。
@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
if (visible) {
// load data here
}else {
// fragment is no longer visible
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.