初体验之Fragment

Fragment

注意事项

  • Fragment使用让人上瘾,但不要过度使用嵌套太多层,听说会出什么不可描述的问题
  • 嵌套两层Fragment或更多层时,除了第一层,其它的都需要调用getChildFragmentManager()来获取FragmentManager
  • 生命周期


    初体验之Fragment_第1张图片
    生命周期

使用步骤

  1. 创建一个Fragment,代码如下:
public class SurveyFragment extends Fragment implements View.OnClickListener{
    private View view;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //这里需要一个fragment_survey.xml,即此Fragment 的布局文件;
        view = inflater.inflate(R.layout.fragment_survey,container,false);        
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState){
      //这里相当于Activity的onCreate();添加布局可以在这里做和Activity没什区别
      //这里是嵌套一个Fragment
        SurveyAlarmDataFragment surveyAlarmDataFragment = new SurveyAlarmDataFragment();
        replaceFragment(surveyAlarmDataFragment);
        super.onActivityCreated(savedInstanceState);
    }
    private void replaceFragment(Fragment fragment){
//这里是显示Fragment的具体步骤
        FragmentManager fragmentManager = getChildFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.survey_data_layout,fragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

    @Override
    public void onClick(View view) {//可以写按钮事件
        switch (view.getId()){
            default:
                break;
        }
    }
}

2.在活动(Activity)中调用,代码如下:

AlarmFragment alarmFragment = new AlarmFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.survey_data_layout,fragment);
transaction.addToBackStack(null);//此条可选,添加可以返回;
transaction.commit();

3.Activity布局文件中最好使用Framelayout布局来加载Fragment,代码如下


    

问题

  • ViewPager加载Fragment可以参考- 初体验之ViewPager
  • 这里只复写了生命周期里的部分,还有很多需要注意的

特别鸣谢

灵魂导师- KingJA

你可能感兴趣的:(初体验之Fragment)