是一个框架,用于在 Android 应用程序内的“目的地”之间导航,无论目的地是作为片段、活动还是其他组件实现,它都提供一致的 API。
一·、加入依赖
implementation "androidx.navigation:navigation-fragment-ktx:2.5.3"
implementation "androidx.navigation:navigation-ui-ktx:2.5.3"
https://developer.android.google.cn/jetpack/androidx/releases/navigation#kts
二、创建文件夹
三、创建xml文件
创建fragment控件
四、activity中加入fragment控件
<fragment
android:id="@+id/demo_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:navGraph="@navigation/demo_nav" />
五、跳转啊事件
public class Fragement1 extends Fragment {
private Button bt1;
private Button bt2;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragement1, container, false);;
bt1 = view.findViewById(R.id.bt1);
bt2 = view.findViewById(R.id.bt2);
bt1.setOnClickListener(v -> {
Navigation.findNavController(getView()).navigate(R.id.action_one_to_two);//这个id就是navigation里的action的id
});
bt2.setOnClickListener(v -> {
Bundle bundle=new Bundle();
bundle.putString("text","来自上级数据");
Navigation.findNavController(getView()).navigate(R.id.action_one_to_three,bundle);//这个id就是navigation里的action的id
});
return view;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/d2687b7f9fe2ad5b1addfc7018f8799c.png)