Android 多个 Fragment 同时显示
在 Android 开发中,Fragment 是一种非常强大的组件,允许我们在同一个活动(Activity)中展示多个 UI 部件。通过使用 Fragment,我们可以实现灵活的界面组合和适配不同屏幕大小的需求。本文将探讨如何同时在 Activity 中显示多个 Fragment,并提供代码示例和关系图。
什么是 Fragment?
Fragment 是一个独立的 UI 组件,可以在活动中嵌套使用。它具有自己的生命周期,可以接收输入事件并展示自己的布局。使用 Fragment,我们可以更好地管理不同的界面模块,从而提高应用的可维护性和可重用性。
建立多个 Fragment 的布局
为了让多个 Fragment 同时显示,我们需要设计一个适合的布局。通常情况下,我们可以使用 FragmentContainerView
或者 FrameLayout
来承载 Fragment。
以下是一个简单的布局示例:
<!-- res/layout/activity_main.xml -->
<LinearLayout
xmlns:android="
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FragmentContainerView
android:id="@+id/fragment_container_1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
<FragmentContainerView
android:id="@+id/fragment_container_2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
在上述布局中,我们定义了两个 FragmentContainerView
,它们将用于承载不同的 Fragment。
创建 Fragment
接下来,我们将创建两个简单的 Fragment。每个 Fragment 只包含一个 TextView,以便我们能够区分它们。
Fragment 1
// MyFragment1.java
public class MyFragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout_1, container, false);
return view;
}
}
Fragment 2
// MyFragment2.java
public class MyFragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout_2, container, false);
return view;
}
}
创建两个Fragment的布局:
<!-- res/layout/fragment_layout_1.xml -->
<LinearLayout xmlns:android="
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是第一个 Fragment"/>
</LinearLayout>
<!-- res/layout/fragment_layout_2.xml -->
<LinearLayout xmlns:android="
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是第二个 Fragment"/>
</LinearLayout>
在 Activity 中管理 Fragment
现在,我们需要在 Activity 中加载这两个 Fragment。我们将在 onCreate
方法中进行加载操作。
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 加载 Fragment 1
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container_1, new MyFragment1())
.commit();
// 加载 Fragment 2
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container_2, new MyFragment2())
.commit();
}
}
}
在上述代码中,我们使用 getSupportFragmentManager().beginTransaction()
方法来添加 Fragment 到指定的容器中。
系统架构关系图
以下是一个简单的关系图,展示了 Activity 和 Fragment 之间的关系。
erDiagram
ACTIVITY ||--o{ FRAGMENT : contains
FRAGMENT {
string layout
string lifecycle
}
ACTIVITY {
string onCreate()
string setContentView()
}
总结
通过使用 Fragment,我们可以有效地在一个 Activity 中显示多个 UI 组件。在本文中,我们通过简单的实例展示了如何加载多个 Fragment,同时确保它们能够在不同的布局中独立显示。使用 Fragment 让我们的应用更加灵活、可维护,为开发者提供了更大的空间去实现各种复杂的 UI 逻辑。
希望这篇文章能帮助你更好地理解 Android 中 Fragment 的使用,掌握多个 Fragment 同时显示的基本方法。