我有一个FragmentActivity,可以在一个视图寻呼机中加载3个片段。在每次全新安装时,第二个片段都会加载,但很快就会变黑。在此之后,重新加载第二个片段,即使在浏览视图时也能正常工作。因此,它仅在第一次加载时变黑。我使用FragmentPagerAdapter和FragmentStatePagerAdapter实现了它,但它的行为相同。这只发生在KitKat和Lollipop上。所有片段都有简单的布局,没有嵌套片段。
doctrine_mongodb:
# ...
connections:
default:
server: "mongodb://mongodb-01:27017,mongodb-02:27017,mongodb-03:27017"
适配器:
public class IntroActivity extends FragmentActivity {
private List<Fragment> listFragments;
private PagerAdapter pagerAdapterWelcome;
private OnboardingPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intro_pager);
viewPager = (OnboardingPager) findViewById(R.id.viewPager);
//Initializing the List
listFragments = new ArrayList<Fragment>();
//initializing the fragments
WelcomeFragment welcomeFragment = new WelcomeFragment();
TicketScanFragment ticketOptionScanFragment = new TicketScanFragment();
ScannerFragment scanFragment = new ScannerFragment();
//Adding Fragments to List
listFragments.add(welcomeFragment);
listFragments.add(ticketOptionScanFragment);
listFragments.add(scanFragment);
//initializing PagerAdapter
pagerAdapterWelcome = new PagerAdapter(getSupportFragmentManager(), listFragments);
viewPager.setAdapter(pagerAdapterWelcome);
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots);
tabLayout.setupWithViewPager(viewPager, true);
}
答案 0 :(得分:1)
问题是实例化SurfaceView的第三个片段。看起来ViewPager默认会破坏并创建不在屏幕外的视图。所以为了阻止这个,我在FragmentActivity中添加了
viewPager.setOffscreenPageLimit(listFragments.size());
指定了不可破坏的视图的数量。在添加之前,ViewPager的子节点数总是小一页,现在我明白了为什么,SurfaceView总是被破坏,因为它在屏幕之外。最后,不再有黑屏/闪烁。
答案 1 :(得分:0)
希望这可以帮助您的情况:您可以尝试对实例化视图寻呼机适配器的方式进行以下更改:
//initializing PagerAdapter
pagerAdapterWelcome = new PagerAdapter(getChildFragmentManager(), listFragments);
此处有文档链接:documentation nested fragments