我正在开发一个android项目。我发现viewpager和碎片的一个奇怪的行为。一旦viewpager中的多个片段被加载,一些片段根本不会显示任何内容一段时间,通常超过10秒。之后,内容再次正确显示。Android Fragment不显示任何内容
以下是我有:
它的UI采用的是MainActivity只包含一个viewpager mMainPager。
private void setupViewPager() {
mMainPageAdapter = new MainPageAdapter(getSupportFragmentManager());
mMainPager.setAdapter(mMainPageAdapter);
mMainPager.addOnPageChangeListener(this);
mMainPager.setOnSwipeOutListener(this);
}
MainPageAdapter在MainActivity中定义如下。它有4个片段:
private class MainPageAdapter extends FragmentStatePagerAdapter {
public MainPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUMBER_OF_PAGES;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return Fragment0.newInstance();
case 1:
return Fragment1.newInstance();
case 2:
return Fragment2.newInstance();
default:
return Fragment3.newInstace();
}
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}
}
Fragment3有一个viewpager嵌套在里面。该viewpager包含4个片段。
ChatsViewPager pagerChats;
适配器使用com.ogaclejapan.smarttablayout.utils.v4
FragmentStatePagerItemAdapter adapterSegChat = new FragmentStatePagerItemAdapter(getChildFragmentManager(), FragmentPagerItems.with(getActivity())
.add(getString(R.string.string0), Fragment30.class)
.add(getString(R.string.string1), Fragment31.class)
.add(getString(R.string.string2), Fragment32.class)
.add(getString(R.string.string3), Fragment33.class)
.create());
pagerChats.setAdapter(adapterSegChat);
一旦MainActivity启动后,片段2显示。如果用户滑动到Fragment3,则pagerChats中的所有四个片段都可以正确显示。轻扫可以在这4个片段之间平滑过渡。
但是,一旦用户滑动到Fragment0和Fragment1,然后又回到Fragment3,则两个四个片段中的pagerChats中的Fragment32和Fragment33不再显示。没有错误,没有冻结。他们只是显示一个空白屏幕。
用户等待超过10秒后,显示Fragment32和Fragment33的内容。
如果用户重复上述过程,同样的事情会再次发生。
这是使用三星S7,运行API 24.
为什么它是这样的?是否由于内存限制?
这解决了我的问题。谢谢。 – windchime
很高兴为您效劳!非常感谢,并很快“回来”! – statosdotcom