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 和导航组件,能让你的安卓应用界面更具模块化和可扩展性,提升用户体验。
浙公网安备 33010602011771号