赞
踩
onStart():Fragment无焦点但可见时,调用此方法.
onResume(): Fragment获取焦点且可见时,调用此方法.
onPause(): Fragment失去焦点但可见时,调用此方法.
onStop(): Fragment不可见时,调用此方法.
Activity1和Fragment1对应的生命启动关系:
Fragment向Activity传值:
接口,广播
Fragment和Fragment之间传值:
通过设置tag,一个fragment可以找到另一个fragment;
接口
1.静态创建(直接在xml说明fragment<>,且不能被删除)
2.动态创建(可进行多项操作);
1.add即把fragment添加进去(注意fragment栈不能包含两个相同的fragment)
2.replace即只有一层fragment,每次都是替换操作;
初始化adapter时候,传入fragment集合以及记得传入fragmentmanager;
Android3.0以上用getFragmentManager 3.0以下用getSupportFragmentManager;
v4包的fragment兼容Android3.0以下,获取fragmentmanager只能通过getSupportFragmentManager;而 app包的fragment只支持3.0以上,通过获取getFragmentManager获取manager;
1.通过实例化view对象来获取控件,进而注册控件的点击事件
2.直接获取通过getActivity获取context:
注意要在onActivityCreated中进行这两个操作,而不是onCreateView中,因为activity的onCreate可能还没有执行,那么getActivity得到的是null;
1、为什么Fragment要懒加载
这个原因有点简单,就是想在用户可见的情况下Fragment才进行一系列的逻辑操作,这样减少了手机的内存开销
2、那种场景需要Fragment要懒加载
ViewPager+Fragment联合使用的时候。有时候在ViewPager的第一页有很多网络请求,第二页也还是有很多网络请求。而ViewPager默认情况是进行预加载前后两页(共管理三个页面)的,意思就是ViewPager的第一页和第二页的网络请求都是同时发起的,这种情况下我们手机的内存消耗也多,而网络不好的时候用户体验也不要,于是就想到了Fragment懒加载;
public abstract class BaseFragment extends Fragment implements View.OnClickListener { protected View mContentView; /** * 控件是否初始化完成 */ private boolean isViewCreated; /** * 数据是否已加载完毕 */ private boolean isLoadDataCompleted; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { this.mContentView = inflater.inflate(loadLayoutId(), null); initViews(); bindListener(); isViewCreated = true; return mContentView; } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser && isViewCreated)//只有在用户可见以及初始化之后才加载数据 lazyLoad(); } /** * Framgnet重组时候也会跳过onCreate,而onAttach和onActivityCreated还是会被调用 */ @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (getUserVisibleHint()) lazyLoad(); } /** * 懒加载的方法 */ protected void lazyLoad() { if (!isLoadDataCompleted) { initData(); processLogic(); isLoadDataCompleted = true; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。