Khi sử dụng androidx.fragment.app.FragmentContainerView
như một máy chủ lưu trữ thay vì một fragment
ứng dụng thông thường không thể điều hướng đến đích sau khi thay đổi định hướng.
Tôi gặp một lỗi sau:
java.lang.IllegalStateException: no current navigation node
Có một gotcha mà tôi nên biết về việc sử dụng nó đúng cách hay cách sử dụng các thành phần điều hướng của tôi là không chính xác?
Hoạt động đơn giản xml với chế độ xem:
...
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:navGraph="@navigation/nav_simple" />
...
Mã điều hướng:
<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/nav_legislator.xml"
app:startDestination="@id/initialFragment">
<fragment
android:id="@+id/initialFragment"
android:name="com.example.fragmenttag.InitialFragment"
android:label="Initial Fragment"
tools:layout="@layout/initial_fragment">
<action
android:id="@+id/action_initialFragment_to_destinationFragment"
app:destination="@id/destinationFragment" />
</fragment>
<fragment
android:id="@+id/destinationFragment"
android:name="com.example.fragmenttag.DestinationFragment"
android:label="Destination Fragment"
tools:layout="@layout/destination_fragment" />
</navigation>
Đây là một repo github nơi bạn có thể dễ dàng tái tạo một lỗi: https://github.com/dmytroKarataiev/navhostBug
<fragment
vào aFragmentContainerView
.