为啥要写这个博客呢,一呢是记录这个问题,二呢就是不想让遇到同样问题的小伙伴,也花费很多的时间去解决,其实很简单,但是提醒大家一点,很重要的有点,看别人的解决方案,不要只是一味的复制粘贴,仔细阅读作者的思路,这样你才会真正解决问题,具体的解决办法,看这个链接全网正真解决的博客,看头像还是个美女哈.
接下来是我说的重点,咣咣咣,敲黑板,划重点了,注意听讲哦,就是里面关于这段的代码,作者是这样写的,
public SecurityInfoFragment(CustomViewpager vp) {
this.vp = vp;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg_sc_filght_info, null);
ButterKnife.bind(this, view);
vp.setObjectForPosition(view,1);
return view;
————————————————
版权声明:本文为CSDN博主「qq_34972666」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34972666/article/details/52386999
== vp.setObjectForPosition(view,1);,就是这句代码很关键,要不然,不会自适应.重写viewpager,然后自定义一个setObjectForPosition()方法,来让每个viewpager的页面自适应,第一个参数是当前的布局view,第二个参数是当前的页面位置.比如我们的viewpager是三个页面,每个页面都是有fragment组成的,那么在每个fragment的onCreateView方法里面都要调用setObjectForPosition()这个方法,并且传的参数,第一个还是当前的布局返回的view,第二个参数是,当前fragment在viewpager里面的位置,所以最后的结果就是:==
public Fragment1(CustomViewpager vp) {
this.vp = vp;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg_sc_filght_info, null);
ButterKnife.bind(this, view);
vp.setObjectForPosition(view,0);
return view;
public Fragment2(CustomViewpager vp) {
this.vp = vp;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg_sc_filght_info, null);
ButterKnife.bind(this, view);
vp.setObjectForPosition(view,1);
return view;
public Fragment3(CustomViewpager vp) {
this.vp = vp;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg_sc_filght_info, null);
ButterKnife.bind(this, view);
vp.setObjectForPosition(view,2);
return view;
这是一个完美的解决方案,我看好多小伙伴都在问,我的为啥 设置成vp.setObjectForPosition(view,0);报空指针啊,八成他是把每个页面都设置成了0,不报空才怪.