android - 如何使用导航组件获取上一个目的地?

标签 android android-fragments navigation

我有 fragment A、B、C 和 X,它们的导航如下。

 A --> X 
 B --> X 
 C --> X

我怎么知道 X 中上一个或上一个目的地的信息?

当前目标 ID 可以通过以下方式找到
Navigation.findNavController(v).getCurrentDestination().getId()

我也尝试使用 getBackStackEntry(int destinationId)但它只返回目的地 id 的最顶层 NavBackStackEntry。换句话说,当前目的地。

还有getActivity().getSupportFragmentManager().getBackStackEntryCount();返回 0。

可能的解决方案是:
  • 将数据从 A、B 和 C 传递到 X,并通过以下方式识别前一个 fragment
    检查该数据。
  • 使用共享的 SharedViewModel。

  • 是否有可能获得当前目的地?

    最佳答案

    java :Navigation.findNavController(v).getPreviousBackStackEntry().getDestination().getId(); Kotlin :findNavController().previousBackStackEntry?.destination?.id这应该会在“X” fragment 中为您返回上一个目的地的 id。

    关于android - 如何使用导航组件获取上一个目的地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60690605/

    相关文章:

    android - 抽屉导航中的 Google map - 空指针异常,哪个是正确的 fragment ?

    Android.Content.ActivityNotFoundException : Unable to find explicit activity class {} have you declared this activity in your AndroidManifest. xml?

    android - 使用特定号码启动 Android 拨号器

    android - 如何禁用 FragmentStatePagerAdapter 上的滑动?

    swift - 导航 View 将全屏转换为具有角半径的 View

    jquery - 为什么导航汉堡图标没有出现在移动设备上?

    css - 使用移动 CSS Nav 强制内容向下

    java - 从自定义 DialogPreference 保存到 SharedPreferences

    android - Android-studio 上的 Datepicker 在我编写的两个不同应用程序中看起来不同?

    android - 两个 fragment 之间的 EventBus - 没有注册订阅者