我在使用Android Navigation Architecture组件时遇到了问题,当我尝试在一个viewpager中从一个Fragment导航到另一个Fragment时,出现了以下错误:
我有一个ViewPager,用来在两个Fragment之间进行导航,它运行良好。问题是,其中一个Fragment中有一个按钮,该按钮也用于使用NavController导航到另一个Fragment,但当单击该按钮时,应用程序崩溃并出现上述错误。
java.lang.IllegalArgumentException: Navigation action/destination
com.gigaweb.mysales:id/action_mainFragment_to_addTransactionFragment cannot be found from the current
destination Destination(com.gigaweb.mysales:id/pagerFragment) label=fragment_pager class=com.gigaweb.mysales.PagerFragment
我有一个ViewPager,用来在两个Fragment之间进行导航,它运行良好。问题是,其中一个Fragment中有一个按钮,该按钮也用于使用NavController导航到另一个Fragment,但当单击该按钮时,应用程序崩溃并出现上述错误。
更新 这是导航图
您可以看到SignIn Fragment是起始目的地,有一个将其连接到作为ViewPager主机的PagerFragment的操作
我希望应用程序的工作方式是:
启动应用程序时,显示SignIn Fragment ..... 正在工作
单击SignIn按钮后导航到PagerFragment ..... 正在工作
通过向左或向右滑动导航到MainFragment和AdminFragment之间 ..... 正在工作
单击FAB按钮时导航到AddTransactionFragment ..... 不工作! 点击按钮时应用程序崩溃。
更新 这是导航图的XML代码
<?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_graph"
app:startDestination="@id/signInFragment">
<fragment
android:id="@+id/signInFragment"
android:name="com.gigaweb.mysales.SignInFragment"
android:label="fragment_sign_in"
tools:layout="@layout/fragment_sign_in" >
<action
android:id="@+id/action_signInFragment_to_pagerFragment"
app:destination="@id/pagerFragment" />
</fragment>
<fragment
android:id="@+id/addTransactionFragment"
android:name="com.gigaweb.mysales.AddTransactionFragment"
android:label="AddTransactionFragment" >
<action
android:id="@+id/action_addTransactionFragment_to_mainFragment"
app:destination="@id/mainFragment" />
</fragment>
<fragment
android:id="@+id/mainFragment"
android:name="com.gigaweb.mysales.MainFragment"
android:label="MainFragment" >
<action
android:id="@+id/action_mainFragment_to_addTransactionFragment"
app:destination="@id/addTransactionFragment" />
</fragment>
<fragment
android:id="@+id/adminFragment"
android:name="com.gigaweb.mysales.AdminFragment"
android:label="AdminFragment" />
<fragment
android:id="@+id/pagerFragment"
android:name="com.gigaweb.mysales.PagerFragment"
android:label="fragment_pager"
tools:layout="@layout/fragment_pager" />
</navigation>
<fragment android:id="@+id/pagerFragment"
的目标中,是否有一个名为action_mainFragment_to_addTransactionFragment
的<action>
元素?因为当该onClick
触发时,您正在该目标上。请展示您的导航图以及这些目标与您的ViewPager之间的关系。 - ianhanniballake