Android 关于ViewPager的fragment切换

Android 关于fragment切换问题

问题:
在使用viewPager展示fragment 的时候,发现切换view时总是重新加载,可是原本的view中已经有了改变,要如何保留呢?
答:viewPager切换fragment 时,fragment 会像activity 那样调用onStart,onResume,但是 fragment还会先调用onCreateView,这样就很容易不小心就覆盖原来的view。另外,fragment被切换掉时在onStop()方法之后会运行onDestroyView,而onCreateView()这个方法是用来初始化view,onDestroyView这个方法是用来销毁view的。值得注意的是onDestroyView销毁的是FragmentManager中fragment对应的view(或者说是布局内容)(以下代码是跟踪onDestroyView方法是注意到的)。

void moveToState(Fragment f, int newState, 
	int transit, 
	int transitionStyle,
	boolean keepActive)...//中间还有一堆,但不是很重要
	switch (f.mState) {
	...//fragment中的view被赋予了"null"
 		f.mContainer = null;
      	f.mView = null;
	...
	}
...

也就是说,在fragme中实例化的对象还未销毁,那么就可以将onCreateView创建的View赋值给类中的一个view对象(通常是私有的),然后在onCreateView中先判断view是否为null,不是就可以直接返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值