先说ViewPage+Fragment嵌套ViewPage+Fragment滑动时内部嵌套卡顿和白屏的问题:具体导致原因没有深入去追究,只记录两种实现方案:
- **第一种就是将内部的Fragment替换掉,写一个抽象的Base类,Base类中的布局就一个容器,见代码:
Base类
public abstract class BasePage {
public Activity mActivity;
public View mRootView;//布局对象
public TextView tvTitle;//标题对象
public FrameLayout flContent;//内容
public BasePage(Activity mActivity) {
this.mActivity = mActivity;
init();
initData();
}
private void init() {
mRootView = View.inflate(mActivity, R.layout.base_pager, null);
flContent = (FrameLayout) mRootView.findViewById(R.id.fl_content);
flContent.addView(initView());
}
/**
* 初始化布局
*/
public abstract View initView();
/**
* 初始化数据
*/
public abstract void initData();
}
让子类实现该抽象类,并将布局返回即可,见代码:
public class ExtendsMyFragment extends BasePage {
private MyViewPage viewPager;
private TabLayout tabLayout;
private List<BasePage> list;
private BasePage fragment1, fragment2, fragment3, fragment4;
private FragmentManager manager;
private List<String> titles;
public ExtendsMyFragment(Activity activity) {
super(activity);
}
private void addFragment() {
list = new ArrayList<>();
fragment1 = new MytoFragment(mActivity);
fragment2 = new MytoFragment(mActivity);
fragment3 = new MytoFragment(mActivity);
fragment4 = new MytoFragment(mActivity);
list.add(fragment1);
list.add(fragment2);
list.add(fragment3);
list.add(fragment4);
}
<