在ViewPager+Fragment实现Tabhost基础之上实现滑动到当前Fragment加载网络数据

本文介绍如何在滑动到指定Fragment时加载网络数据。通过设置ViewPager预加载页面数量并利用onResume()方法检查数据状态,确保仅在必要时加载数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    处女贴,欢迎拍砖!!!

     关于ViewPager+Fragment实现Tabhost相信大家都会了,网上资源很多,感谢开源!!!本文主要是实现滑动到当前Fragment加载网络数据。

1、实现Tabhost就不在这赘述了,如有需求请留言

  2、setOffscreenPageLimit()方法是关键

  好了,进入正题,首先实现滑动到当前Fragment加载网络数据,看下面代码:该Activity为fragment宿主,主要是定义了一个变量item来标示当前界面跟设置预加载界面

public class MainAct1 extends BaseActivity{
	private long exitTime = 0;
	private ViewPager mVp = null;
	private List<Fragment> fragments = null;
	private FragmentViewPagerAdapter mAdapter = null;
	private RadioButton[] mFootButtons = null;
	private LinearLayout mFootLayout = null;
	//当前pager界面
	public int item = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main1);
		fragments = new ArrayList<Fragment>();
		fragments.add(Fragment1.getInstance());
		fragments.add(Fragment2.getInstance());
		fragments.add(Fragment3.getInstance());
		initView();
		setCurrentPager(0);
	}
	@Override
	protected void initView() {
		// TODO Auto-generated method stub
		mFootLayout = (LinearLayout)getView(R.id.main_linearlayout_footer);
		initFootBar();
		
		mVp = (ViewPager)getView(R.id.viewpager);
		//设置预加载3个界面
		mVp.setOffscreenPageLimit(3);
		mAdapter = new FragmentViewPagerAdapter(getSupportFragmentManager(), mVp, fragments);
		mAdapter.setOnExtraPageChangeListener(new FragmentViewPagerAdapter.OnExtraPageChangeListener(){
			@Override
			public void onExtraPageSelected(int i) {
				// TODO Auto-generated method stub
				super.onExtraPageSelected(i);
				setCurrentPager(i);			
			}
		});
	}
	
	public int getItem() {
		return mVp.getCurrentItem();
	}
在Fragment中我们重写onResume()方法,在该方法中执行加载数据方法,(默认加载Fragment1 ,ViewPager默认item为0,所以当item为1时,当前显示是Fragment2)

       @Override
	public void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		//当当前界面为1且保存数据的集合为空时执行
		if(((MainAct1)getActivity()).getItem() == 1 && mDatas.size() == 0){
			getData4Service();
			
		}
		Log.i("tag", "onResume");
	}
 好了小伙伴们,大功告成,是不是很简单?赶快试试吧!(大家可以把宿主Activity中的 setOffscreenPageLimit(3)改为setOffscreenPageLimit(1)当你直接跳到第三个Fragment的时候会有意外惊喜!!!)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值