美文网首页
初体验之Fragment

初体验之Fragment

作者: 淼_f21a | 来源:发表于2017-09-08 16:39 被阅读0次

    Fragment

    注意事项

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


      生命周期

    使用步骤

    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,代码如下

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@null">
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/survey_data_layout"></FrameLayout>
    </LinearLayout>
    

    问题

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

    特别鸣谢

    灵魂导师- KingJA

    相关文章

      网友评论

          本文标题:初体验之Fragment

          本文链接:https://www.haomeiwen.com/subject/myzgjxtx.html