使用Jetpack的Android导航组件重新创建的片段

时间:2019-10-10 05:55:35

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

我有两个片段(例如fragmentA和fragmentB)。

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

然后,如果要返回fragmentA,则在fragmentB中。下面有两种方法:

  • 只需按下后退按钮:fragmentA的onCreate()将不会被调用
  • findNavController()。navigate(R.id.action_fragmentB_to_fragmentA):fragmentA的onCreate()将被称为

为什么?

1 个答案:

答案 0 :(得分:0)

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

例如,请考虑当您在Android上打开YouTube应用程序时,系统会显示主屏幕,并根据您的兴趣填充视频。当您在滚动一点后点击视频,然后在视频中途决定通过按“后退”按钮返回时,您希望该应用程序返回到您点击视频时的位置,并且滚动的次数与您之前所做的相同,而不是重新加载整个主页,而是重新填充新视频并将您重置到屏幕顶部。

类似地,您应用中的“后退”按钮应执行相同的操作。但是,如果您希望后退按钮的行为有所不同,则android确实提供了一种方法。请参阅this