backstack не очищается при переходе от фрагмента к активности - PullRequest
0 голосов
/ 25 апреля 2020

Вот мой код

<fragment
  android:id="@+id/fragment1"
  android:name="com.example.app.Fragment1"
  android:label="SignatureFragment"
  tools:layout="@layout/layout_fragment1">
    <action
      android:id="@+id/action_fragment1_to_main_activity"
      app:destination="@id/main_activity"
      app:enterAnim="@anim/slide_in_from_right"
      app:exitAnim="@anim/no_anim"
      app:launchSingleTop="true"
      app:popEnterAnim="@anim/no_anim"
      app:popExitAnim="@anim/slide_out_to_right"
      app:popUpTo="@id/navigation_graph_id"
      app:popUpToInclusive="true" />
</fragment>

<activity
  android:id="@+id/main_activity"
  android:name="com.example.app.MainActivity"
  android:label="MainActivity"
  tools:layout="@layout/activity_main" />

Теперь код для навигации

findNavController().navigate(R.id.action_fragment1_to_main_activity)

Когда я перехожу к активности и нажимаю назад, fragment все еще там. Я хочу очистить backstack после открытия действия.

Я попытался удалить анимацию, а также попытался удалить app:launchSingleTop, но безуспешно.

1 Ответ

1 голос
/ 28 апреля 2020

Редактировать Jetpack Navigation предназначен для работы с одним действием и не полностью поддерживает навигацию действий с параметрами, переданными в action s

Таким образом, для очистки стека при переходе от одного действия к другой вам все равно нужно будет позвонить activity.finish()

Изменить конец

Дело в том, что findNavController().navigate(R.id.action_fragment1_to_main_activity) не будет работать.

Попробуйте перемещаться по navigate(@NonNull NavDirections directions). В вашем случае это будет выглядеть примерно так:

findNavController().navigate(
     Fragment1Directions.actionFragment1ToMainActivity())

Надеюсь, это поможет.

...