我正在開發一個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