android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical” tools:context=“.MainActivity”> <fragment android:id=“@+id/one” class=“com.wust.twofragrement.OneFragrement” android:layout_width=“match_parent” android:layout_height=“300dp”/> <fragment android:id=“@+id/two” class=“com.wust.twofragrement.TwoFragrement” android:layout_width=“match_parent” android:layout_height=“300dp”/>
注意:这个 fragment 一定要加 id,要不然会报如下错误
Caused by: android.view.InflateException: Binary XML file line #14 in com.wust.twofragrement:layout/activity_main: Binary XML file line #14 in com.wust.twofragrement:layout/activity_main: Error inflating class fragment
- 第二步,编写 fragment 类代码
package com.wust.twofragrement; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; /** • ClassName: OneFragrement • Description: • date: 2021/5/27 16:26 • • @author yiqi • @email:1820762465@qq.com • @QQ:1820762465 • @since JDK 1.8 */ public class OneFragrement extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragrement_one, null); return view; } } package com.wust.twofragrement; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; /** • ClassName: OneFragrement • Description: • date: 2021/5/27 16:26 • • @author yiqi • @email:1820762465@qq.com • @QQ:1820762465 • @since JDK 1.8 */ public class TwoFragrement extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragrement_two, null); return view; } }
注意:在这一步中你引入的 fragment 包要正确,一定要是 android.app.Fragment; 另外一个是 androidx.fragment.app.Fragment; 在这种静态调用方法里,两个包任选其一即可。
动态调用
- 第一步,编写xml布局文件,使用 FrameLayout 占位
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android” xmlns:app=“http://schemas.android.com/apk/res-auto” xmlns:tools=“http://schemas.android.com/tools” android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical” tools:context=“.MainActivity”> <FrameLayout android:id=“@+id/fl_one” android:layout_width=“match_parent” android:layout_height=“300dp”/> <FrameLayout android:id=“@+id/fl_two” android:layout_width=“match_parent” android:layout_height=“300dp”/>