Вы используете неправильный идентификатор в popUpTo
Согласно руководству popUpTo :
app:popUpTo
сообщает библиотеке навигации извлекать несколько адресатов из заднего стека как часть вызова navigate()
. Значение атрибута - это идентификатор самого последнего пункта назначения, который должен оставаться в стеке.
Вы также можете включить app:popUpToInclusive="true"
, чтобы указать, что пункт назначения, указанный в app:popUpTo
, также следует удалить из заднего стека.
popUpTo
должен указывать на пункт назначения, который уже находится в заднем стеке, который вы хотите извлечь из заднего стека. Поэтому, если вы хотите вытолкнуть все от до до splashFragment
, вы должны использовать app:popUpTo="@id/splashFragment"
. Если вы хотите вытолкнуть все от до и splashFragment
включительно, тогда вы должны использовать app:popUpTo="@id/splashFragment"
и app:popUpToInclusive="true"
:
<fragment
android:id="@+id/splashFragment"
android:name="com.view.SplashFragment"
android:label="SplashFragment" >
<action
android:id="@+id/action_splashFragment_to_loginFragment"
app:destination="@id/loginFragment"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popUpTo="@id/splashFragment"
app:popUpToInclusive="true"/>
<action
android:id="@+id/action_splashFragment_to_mainFragment"
app:destination="@id/mainFragment"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popUpTo="@id/splashFragment"
app:popUpToInclusive="true"/>
</fragment>