Fragment
注意事项
-
Fragment
使用让人上瘾,但不要过度使用嵌套太多层,听说会出什么不可描述的问题 - 嵌套两层
Fragment
或更多层时,除了第一层,其它的都需要调用getChildFragmentManager()
来获取FragmentManager
-
生命周期
使用步骤
- 创建一个
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