使用 NavController 的导航适用于我的应用程序中的其他片段,但现在我创建了一个需要导航到现有 FragmentB 的 FragmentA。有不同的片段成功调用
findNavController().navigate(directions)
到 FragmentB。
我创建了一个特定于 FragmentA 的导航文件
<?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"
android:id="@+id/fragmentA_nav"
app:startDestination="@id/fragmentA">
<fragment
android:id="@+id/fragmentA"
android:name="app.packageA.FragmentA"
android:label="FragmentA" >
<action
android:id="@+id/action_fragmentA_to_fragmentB"
app:destination="@id/fragmentB" />
</fragment>
</navigation>
当我打电话给
findNavController().navigate(FragmentADirections.actionFragmentAToFragmentB())
时,我已经检查过 findNavController().currentDestination?.id
与 R.id.FragmentA
相同,但是我得到了这个错误
java.lang.IllegalArgumentException: Navigation action/destination .debug:id/action_fragmentA_to_fragmentB cannot be found from the current destination
Destination(app.debug:id/fragmentA) label=FragmentA class=app.package.FragmentA
我还检查了没有多次调用导航。使用Android Studio 的图形设计器制作导航文件时也会出现同样的错误。它适用于其他片段及其各自的导航文件,但不适用于我刚才为其创建新导航文件的新片段。