【问题标题】:Fragments recreated with Jetpack's Android Navigation components使用 Jetpack 的 Android 导航组件重新创建的片段
【发布时间】:2019-10-10 05:55:35
【问题描述】:

我有两个片段(例如片段A 和片段B)。

首先,在fragmentA 中使用findNavController().navigate(R.id.action_fragmentA_to_fragmentB) 导航到fragmentB。

那么,如果你想回到fragmentA,在fragmentB。下面有两种方法:

  • 只需按下返回按钮:fragmentA 的onCreate() 不会被调用
  • findNavController().navigate(R.id.action_fragmentB_to_fragmentA):fragmentA的onCreate()会被调用

为什么?

【问题讨论】:

    标签: android android-jetpack android-jetpack-navigation


    【解决方案1】:

    后退按钮不调用片段的onCreate的原因是设计使然。用户不会期望返回按钮再次调用 onCreate 或创建您的片段。

    例如,想象一下当您在 Android 上打开 YouTube 应用时,您会看到主屏幕,其中包含根据您的兴趣填充的视频。当您在稍微滚动后点击视频,然后在视频中途决定按后退按钮返回时,您希望应用程序回到您点击视频的位置,滚动量与您所做的相同,而不是重新加载整个主页,再次填充新视频并将您重置到屏幕顶部。

    同样,应用中的后退按钮也应该这样做。但是,如果您希望后退按钮的行为有所不同,android 确实提供了一种方法来做到这一点。请参阅this

    【讨论】:

    • The reason that the back button doesn't call onCreate of the fragment is by design. 有安卓官方文档吗?
    猜你喜欢
    • 2019-07-02
    • 1970-01-01
    • 2021-12-27
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多