让TabFragment页面onCreateView不做任何加载数据操作
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, container, false);
return view;
}
在viewpage + tablayout页面加一下代码:
private String[] Titles = new String[]{"tab1", "tab2","tab3","tab4"};
private List<Fragment> list_fragment;
public int totalTabNum = 4;//假如有四个Fragment页面
public int openTabNum = 0;//当前已打开的页面数量
MyFragmentPagerAdapter fragmentPagerAdapter;
private void initViews() {
// tablayout.setSelectedTabIndicatorHeight(0);
newsHotFrag = new NewsHotFrag();
newsVideoFrag = new NewsVideoFrag();
newsFootballFrag = new NewsFootballFrag();
newsBasketballFrag = new NewsBasketballFrag();
list_fragment = new ArrayList<>();
list_fragment.add(newsAFrag);
list_fragment.add(newsBFrag);
list_fragment.add(newsCFrag);
list_fragment.add(newsDFrag);
if(list_fragment != null){
fragmentPagerAdapter = new MyFragmentPagerAdapter(getChildFragmentManager(), list_fragment, Titles);
newsViewpager.setAdapter(fragmentPagerAdapter);
tablayout.setupWithViewPager(newsViewpager);
newsViewpager.setCurrentItem(0);
newsViewpager.setOffscreenPageLimit(4);
newsViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//滑动监听加载数据,一次只加载一个标签页
if(openTabNum < totalTabNum){
list_fragment.get(position);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
class MyFragmentPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
private String[] Titles;
public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments , String[] Titles) {
super(fm);
this.fragments = fragments;
this.Titles = Titles;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return Titles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return Titles[position];
}
//防止fragment自动销毁
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
}
}
回到TabFragment中,让Handler加载数据
private AlarmFragment alarmFragment;//这是使用ViewPager的页面
private boolean is_load = false;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(!is_load){
is_load = true;
if(alarmFragment.openTabNum < alarmFragment.totalTabNum){
alarmFragment.openTabNum++;
}
loadDataList();//加载网络数据的方法
}
return ;
}
};
public void sendMessage(){
Message message = handler.obtainMessage();
message.sendToTarget();
}
本文参考:https://www.jianshu.com/p/66ff0330f2d9