IllegalArgumentException:无法从当前目的地 Destination 找到导航操作/目的地 [导航错误]

Abo*_*ood 7 navigation android android-fragments kotlin android-studio

我对导航图和导航组件不太熟悉,我正在尝试将数据从位于“PrivSectionFragment”中的回收器视图传递到“PrivSectionDetailFragment”。不幸的是,每当我运行该应用程序时,我都会在日志中收到此错误

\n
 java.lang.IllegalArgumentException: Navigation action/destination com.gazelle.wadifatk:id/action_privSectionFragment_to_privsDetailFragment cannot be found from the current destination Destination(com.gazelle.wadifatk:id/jobsFragment) label=\xd8\xa7\xd9\x84\xd9\x88\xd8\xb8\xd8\xa7\xd8\xa6\xd9\x81 class=com.gazelle.wadifatk.jobLists.jobsFragment\n    at androidx.navigation.NavController.navigate(NavController.java:940)\n    at androidx.navigation.NavController.navigate(NavController.java:877)\n    at androidx.navigation.NavController.navigate(NavController.java:863)\n    at androidx.navigation.NavController.navigate(NavController.java:1159)\n    at com.gazelle.wadifatk.jobLists.PrivListAdapter.onBindViewHolder$lambda-0(PrivListAdapter.kt:55)\n
Run Code Online (Sandbox Code Playgroud)\n

这就是它所指的地方// 它指的是我的回收器适配器

\n
PushDownAnim.setPushDownAnimTo(holder.card_view)\n        //.setScale(PushDownAnim.MODE_SCALE, 0.89f)\n        .setOnClickListener {\n            val sendData = PrivSectionFragmentDirections\n                .actionPrivSectionFragmentToPrivsDetailFragment(priv_list[position])\n            Navigation.findNavController(view).navigate(sendData)\n        }\n
Run Code Online (Sandbox Code Playgroud)\n

这是 my_nav.xml // 蓝色圆圈\n我的导航照片

\n

请记住,我能够通过使用相同的动作将数据从“LatestNewsFragment”传递到“NewsDetailsFragment”,但我不知道为什么它接受了这些片段之间传递的数据,但没有“不接受从“PrivSectionFragment”到“PrivSectionDetailFragment”。

\n

这是片段的代码

\n
<navigation xmlns:android="http://schemas.android.com/apk/res/android"\nxmlns:app="http://schemas.android.com/apk/res-auto"\nxmlns:tools="http://schemas.android.com/tools"\nandroid:id="@+id/my_nav"\napp:startDestination="@id/latestNewsFragment">\n\n<fragment\n    android:id="@+id/latestNewsFragment"\n    android:name="com.gazelle.wadifatk.newsList.LatestNewsFragment"\n    android:label="\xd8\xa7\xd8\xae\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xa7\xd8\xae\xd8\xa8\xd8\xa7\xd8\xb1"\n    tools:layout="@layout/fragment_latest_news" >\n    <action\n        android:id="@+id/action_latestNewsFragment_to_jobsFragment"\n        app:destination="@id/jobsFragment"\n        app:enterAnim="@anim/nav_default_enter_anim"\n        app:exitAnim="@anim/nav_default_exit_anim" />\n    <action\n        android:id="@+id/action_latestNewsFragment_to_newsDetailFragment"\n        app:destination="@id/newsDetailFragment"\n        app:enterAnim="@android:anim/slide_in_left"\n        app:exitAnim="@android:anim/slide_out_right"\n        app:popEnterAnim="@android:anim/slide_in_left"\n        app:popExitAnim="@android:anim/slide_out_right" />\n</fragment>\n<fragment\n    android:id="@+id/jobsFragment"\n    android:name="com.gazelle.wadifatk.jobLists.jobsFragment"\n    android:label="\xd8\xa7\xd9\x84\xd9\x88\xd8\xb8\xd8\xa7\xd8\xa6\xd9\x81"\n    tools:layout="@layout/fragment_jobs" >\n    <action\n        android:id="@+id/action_jobsFragment_to_govSectionFragment"\n        app:destination="@id/govSectionFragment" />\n    <action\n        android:id="@+id/action_jobsFragment_to_privSectionFragment2"\n        app:destination="@id/privSectionFragment" />\n    <action\n        android:id="@+id/action_jobsFragment_to_latestNewsFragment"\n        app:destination="@id/latestNewsFragment" />\n</fragment>\n<fragment\n    android:id="@+id/privSectionFragment"\n    android:name="com.gazelle.wadifatk.jobLists.PrivSectionFragment"\n    android:label="PrivSectionFragment" >\n    <action\n        android:id="@+id/action_privSectionFragment_to_privsDetailFragment"\n        app:destination="@id/privsDetailFragment"\n        app:enterAnim="@anim/nav_default_enter_anim"\n        app:exitAnim="@anim/nav_default_exit_anim" />\n    <action\n        android:id="@+id/action_privSectionFragment_to_jobsFragment"\n        app:destination="@id/jobsFragment" />\n</fragment>\n<fragment\n    android:id="@+id/newsDetailFragment"\n    android:name="com.gazelle.wadifatk.newsList.NewsDetailFragment"\n    android:label="\xd8\xa7\xd9\x84\xd8\xaa\xd9\x81\xd8\xa7\xd8\xb5\xd9\x8a\xd9\x84"\n    tools:layout="@layout/fragment_news_detail">\n    <action\n        android:id="@+id/action_newsDetailFragment_to_latestNewsFragment"\n        app:destination="@id/latestNewsFragment"\n        app:enterAnim="@android:anim/slide_in_left"\n        app:exitAnim="@android:anim/slide_out_right"\n        app:popEnterAnim="@android:anim/slide_in_left"\n        app:popExitAnim="@android:anim/slide_out_right" />\n    <argument\n        android:name="news_data_list"\n        app:argType="com.gazelle.wadifatk.newsList.NewsListViewModel" />\n\n</fragment>\n\n <fragment\n    android:id="@+id/privsDetailFragment"\n    android:name="com.gazelle.wadifatk.jobLists.PrivsDetailFragment"\n    android:label="\xd8\xa7\xd9\x84\xd8\xaa\xd9\x81\xd8\xa7\xd8\xb5\xd9\x8a\xd9\x84"\n    tools:layout="@layout/fragment_privs_detail" >\n\n    <argument\n        android:name="priv_data_list"\n        app:argType="com.gazelle.wadifatk.jobLists.PrivListViewModel" />\n    <action\n        android:id="@+id/action_privsDetailFragment_to_privSectionFragment"\n        app:destination="@id/privSectionFragment" />\n\n</fragment>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是 jobsFragment() 的屏幕截图

\n

在此输入图像描述

\n

Arp*_*kla 4

您只需JobsFragment在导航图中添加,并在此片段中添加操作PrivsDetailFragment

\n
<fragment\n    android:id="@+id/jobsFragment"\n    android:name="com.gazelle.wadifatk.jobLists.jobsFragment"\n    android:label="\xd8\xa7\xd9\x84\xd9\x88\xd8\xb8\xd8\xa7\xd8\xa6\xd9\x81"\n    tools:layout="@layout/fragment_jobs" >\n    <action\n        android:id="@+id/action_jobsFragment_to_govSectionFragment"\n        app:destination="@id/govSectionFragment" />\n    <action\n        android:id="@+id/action_jobsFragment_to_latestNewsFragment"\n        app:destination="@id/latestNewsFragment" />\n    <action\n        android:id="@+id/action_jobsFragment_to_privsDetailFragment"\n        app:destination="@id/privsDetailFragment"\n        app:enterAnim="@anim/nav_default_enter_anim"\n        app:exitAnim="@anim/nav_default_exit_anim" />\n</fragment>\n
Run Code Online (Sandbox Code Playgroud)\n

然后在您的适配器中,使用以下操作:

\n
PushDownAnim.setPushDownAnimTo(holder.card_view)\n        //.setScale(PushDownAnim.MODE_SCALE, 0.89f)\n        .setOnClickListener {\n            val sendData = JobFragmentDirections.actionJobFragmentToPrivsDetailFragment(priv_list[position])\n            Navigation.findNavController(view).navigate(sendData)\n        }\n
Run Code Online (Sandbox Code Playgroud)\n

您可以privSectionFragment从导航图中删除。

\n