3.13

安卓中的 Fragment 与导航组件实战​
在安卓开发中,Fragment(碎片)是构建灵活、可复用 UI 的重要组件,特别适用于复杂界面和响应式设计。Fragment 可以嵌入在 Activity 中,实现独立的生命周期和 UI 逻辑,便于模块化开发。​
创建一个简单的 Fragment,先定义布局文件fragment_hello.xml:​

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"​
android:layout_width="match_parent"​
android:layout_height="match_parent"​
android:orientation="vertical"​
android:gravity="center">​
<TextView​
android:id="@+id/fragment_text"​
android:layout_width="wrap_content"​
android:layout_height="wrap_content"​
android:text="Hello from Fragment!"​
android:textSize="20sp"/>​


然后创建对应的 Java 类HelloFragment.java:​

import android.os.Bundle;​
import android.view.LayoutInflater;​
import android.view.View;​
import android.view.ViewGroup;​
import androidx.annotation.NonNull;​
import androidx.annotation.Nullable;​
import androidx.fragment.app.Fragment;​
public class HelloFragment extends Fragment {​
@Nullable​
@Override​
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {​
return inflater.inflate(R.layout.fragment_hello, container, false);​
}​
}​

将 Fragment 添加到 Activity 中,可以在 Activity 的布局文件中使用标签,或者通过代码动态添加。​
安卓导航组件(Navigation Component)则进一步简化了 Fragment 之间的导航管理。通过在res目录下创建navigation文件夹,并定义导航图文件(如nav_graph.xml),可以直观地管理应用内的页面跳转逻辑:​

<navigation xmlns:android="http://schemas.android.com/apk/res/android"​
xmlns:app="http://schemas.android.com/apk/res-auto"​
android:id="@+id/nav_graph"​
app:startDestination="@id/helloFragment">​
<fragment​
android:id="@+id/helloFragment"​
android:name="com.example.HelloFragment"​
android:label="Hello Fragment">​
<action​
android:id="@+id/action_helloFragment_to_secondFragment"​
app:destination="@id/secondFragment"/>​

<fragment​
android:id="@+id/secondFragment"​
android:name="com.example.SecondFragment"​
android:label="Second Fragment"/>​


在 Activity 中通过NavHostFragment加载导航图,并使用NavController实现页面跳转:​

NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);​
NavController navController = navHostFragment.getNavController();​
Button button = findViewById(R.id.navigate_button);​
button.setOnClickListener(new View.OnClickListener() {​
@Override​
public void onClick(View v) {​
navController.navigate(R.id.action_helloFragment_to_secondFragment);​
}​
});​

掌握 Fragment 和导航组件,能让你的安卓应用界面更具模块化和可扩展性,提升用户体验。

posted @ 2025-03-13 09:16  Echosssss  阅读(12)  评论(0)    收藏  举报