fragment生命周期
http://www.cnblogs.com/purediy/p/3276545.html
注意 onCreateView onDestoryView 在fragment由不可见变为可见时会调用
静态替换fragment
FragmentManager fragmentManager = getSupportFragmentManager();
// 1. 获取事物
FragmentTransaction transaction = fragmentManager.beginTransaction();
// 2. 完成替换
// 完成左侧菜单界面的替换
transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),
LEFT_MUNE_TAG);
// 完成左侧菜单界面的替换
transaction.replace(R.id.fl_main_menu, new MainContentFragment(),
MAIN_MUNE_TAG);
// 3.提交事物
transaction.commit();
/**
* @return
* 返回左侧菜单的fragment
*/
public MainContentFragment getMainMenuFragment(){
FragmentManager fragmentManager = getSupportFragmentManager();
//根据TAG返回Fragment
MainContentFragment leftFragment = (MainContentFragment) fragmentManager.findFragmentByTag(MAIN_MUNE_TAG);
return leftFragment;
}
//TAG
public static final String CONTEXT_FragmentTag="CONTEXT_FragmentTag" ;
BaseFragment
public abstract class BaseFragment extends Fragment
{
private final String TAG = this.getClass().getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mainActivity = (MainActivity) getActivity();//获取fragment所在Activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(bindLayout(), container, false);
initView(view, savedInstanceState);
return view;
}
/**
* 必须覆盖此方法来完全界面的显示
* @return
*/
protected abstract void initView(View view, Bundle savedInstanceState);
/**
* 子类覆盖此方法来完成数据的初始化
*/
public void initData(){
}
/**
* 子类覆盖此方法来完成事件的添加
*/
public void initEvent(){
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
//初始化事件和数据
super.onActivityCreated(savedInstanceState);
initData();//初始化数据
initEvent();//初始化事件
}
}
newInstance和构造函数
Android studio 自动生成方法的作用和意义:
其实是和Activity之间相互回调(目的是为了保护参数不丢失)
http://www.jianshu.com/p/5dc41e069a03
讲述了为什么要使用它推荐的构造方法!
onAttach 创建时会回调一次 onFragmentLisner