Fragment中使用TabLayout+ViewPager+Fragment切换界面丢失问题

这里记录两个问题

ViewPager内容丢失问题

由于之前使用viewPager搭配fragment在然后托管在Activity中可以左右滑动来实现一个卡片滑动的效果。
但是这次将他们(ViewPager)托管在一个Fragment中的时候发现在当前fragment中切换时候界面没有问题,一旦切出去另外的NavigationView时候再回来,viewPage中的内容就消失掉了。
所以说在fragment中使用Switch来切换viewPager切换时候应该使用

如果需要显示的界面并不是很多的情况下可以使用FragmentStatePagerAdapter来代替FragmentPagerAdapter虽然两个都是继承PagerAdapter,但是前者可以回收pager中的view,切换时候再刷新,这样在相对动态的界面可以保证数据的最新而不会丢失视图。

设置全屏显示失效问题

一般情况可以在andrmainfest文件中application对应的属性下添加

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

还可以在活动中onCreate()函数中使用,但是要在setContentView()之前使用

this.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去标题栏 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉Activity上面的状态栏 

然后当我这样设置的时候发现并没有去掉app标题,这样的原因来自于v4和v7两个包的问题。activity继承了AppComPatActiviry,属于v7包,可以将其改为Activity。还有可以使用

//v7包下去除标题栏代码:
getSupportActionBar().hide();   
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

你可能感兴趣的:(Fragment中使用TabLayout+ViewPager+Fragment切换界面丢失问题)