FragmentPagerAdapter 有空片段
FragmentPagerAdapter has empty Fragments
此问题类似于 many other questions,它描述了我遇到的相同问题:我有一个包含 5 个项目的 FragmentPagerAdapter,在滑动到第三个 tab/swiping 后不显示片段.然而,就我而言,我的 ViewPager 没有托管在片段中,而是直接托管在 activity 中,因此 getChildFragmentManager()
解决方案显然不适用于此处。
我的Activity
public class NotificationListActivity extends AppCompatActivity {
@BindView(R.id.container)
ViewPager mViewPager;
@BindView(R.id.tabs)
TabLayout tabLayout;
@BindView(R.id.toolbar)
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification_list);
ButterKnife.bind(this);
setSupportActionBar(toolbar);
mViewPager.setAdapter(new CategoryPagerAdapter(getSupportFragmentManager()));
tabLayout.setupWithViewPager(mViewPager);
}
...
我的适配器
public class CategoryPagerAdapter extends FragmentPagerAdapter {
@NonNull
private final String[] pageTitles;
@NonNull
private final Fragment[] fragments;
public CategoryPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
this.pageTitles = // Intialization ommitted for brevity
this.fragments = // Initialization ommitted for brevity
}
@Override
public Fragment getItem(int position) {
if (position > fragments.length - 1)
throw new IllegalArgumentException("<ommitted>");
return fragments[position];
}
@Override
public int getCount() {
return pageTitles.length;
}
@Override
public CharSequence getPageTitle(int position) {
if (position > pageTitles.length - 1)
throw new IllegalArgumentException("<ommitted>");
return pageTitles[position];
}
我通过增加 OffscreenPageLimit 解决了这个问题:
mViewPager.setOffscreenPageLimit(5);
(我有 5 个标签)
这不是很优雅,但暂时解决了这个问题。我不会接受这个作为答案,因为它不是正确的方式。
此问题类似于 many other questions,它描述了我遇到的相同问题:我有一个包含 5 个项目的 FragmentPagerAdapter,在滑动到第三个 tab/swiping 后不显示片段.然而,就我而言,我的 ViewPager 没有托管在片段中,而是直接托管在 activity 中,因此 getChildFragmentManager()
解决方案显然不适用于此处。
我的Activity
public class NotificationListActivity extends AppCompatActivity {
@BindView(R.id.container)
ViewPager mViewPager;
@BindView(R.id.tabs)
TabLayout tabLayout;
@BindView(R.id.toolbar)
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification_list);
ButterKnife.bind(this);
setSupportActionBar(toolbar);
mViewPager.setAdapter(new CategoryPagerAdapter(getSupportFragmentManager()));
tabLayout.setupWithViewPager(mViewPager);
}
...
我的适配器
public class CategoryPagerAdapter extends FragmentPagerAdapter {
@NonNull
private final String[] pageTitles;
@NonNull
private final Fragment[] fragments;
public CategoryPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
this.pageTitles = // Intialization ommitted for brevity
this.fragments = // Initialization ommitted for brevity
}
@Override
public Fragment getItem(int position) {
if (position > fragments.length - 1)
throw new IllegalArgumentException("<ommitted>");
return fragments[position];
}
@Override
public int getCount() {
return pageTitles.length;
}
@Override
public CharSequence getPageTitle(int position) {
if (position > pageTitles.length - 1)
throw new IllegalArgumentException("<ommitted>");
return pageTitles[position];
}
我通过增加 OffscreenPageLimit 解决了这个问题:
mViewPager.setOffscreenPageLimit(5);
(我有 5 个标签)
这不是很优雅,但暂时解决了这个问题。我不会接受这个作为答案,因为它不是正确的方式。