Fragment为什么叫第五组件?
Fragment 的使用都是依赖activity ,并且有自己生命周期
Fragment生命周期
onAttach:与activity关联的时候调用
onCreate(Bundle bun): 初始化fragment 可通过参数savedInstanceState获取之前保存的值
onCreateView: 加载布局
----------
onActivityCreate(); Activity执行onCreate之后调用
onStart: 有不可件变成可见
onResume 可见可交互
onpause:暂停状态 可见不可交互
onstop: 完全不可见
--------------
onDestoryView:移除布局,但未与activity接除绑定仍然可以以通过 oncreateView 重新创建视图 通常在viewpage+fragment中使用
onDestory:销毁fragment 通常按back键或者被回收是掉用
onDetach:Fragment和Activity解除关联的时候调用。在onDestroy方法之后调用。
=======使用fragment的方式
1:在xml布局中使用 添加name属性 指定Fragment
<fargment android:name=‘com.xxx.xxx.MyFragment’ android:id='' ... />
2:在代码中 使用
add remove replace 的区别
1:使用add 一般都需要 配合 hine (隐藏)show(显示)fragment
一般会配合hide使用:transaction.add(R.id.fragment_container, oneFragment).hide(twoFragment).commit();
2:同一个容器中不允许添加相同的 fragment
3:使用add添加fragemnt 不会对其他fragemnt生命周期产生影响
replace
1.替换会把容器中的所有内容全都替换掉,有一些app会使用这样的做法,保持只有一个fragment在显示,减少了界面的层级关系
最合适的处理方式是这样的:
1.在add的时候,加上一个tab参数
transaction.add(R.id.content, IndexFragment,”Tab1″);
2.然后当IndexFragment引用被回收置空的话,先通过
IndexFragment=FragmentManager.findFragmentByTag(“Tab1″);
找到对应的引用,然后继续上面的hide,show;
=========传递值
Activity 给fragment 参数
1: fragment.setArguments(bundle)
2:在Activity中使用fragment 对象 调用fragment中的
fragment给Activity传参数
1;在fragment定义一个接口
1.2:在onAttach 绑定依赖的activity
1.3:依赖的activity 实现fragment中的方法
1;//定义一个回调接口 public interfaceCallBackValue{
public void SendMessageValue(String strValue);
}
2:
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub super.onAttach(activity);
//当前fragment从activity重写了回调接口得到接口的实例化对象
callBackValue =(CallBackValue) getActivity();
}
3: MxxActivity extends Activity implements CallBackValue
fragment给fragment 传值
调用共有的activity 在 activity 添加get和set方法