android - 使用 Jetpack 的 Android 导航组件重新创建的片段
问题描述
我有两个片段(例如,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()
将被调用
为什么?
解决方案
后退按钮不调用片段的 onCreate 的原因是设计使然。用户不会期望返回按钮再次调用 onCreate 或创建您的片段。
例如,想想当您在 Android 上打开 YouTube 应用程序时,您会看到您的主屏幕,其中包含基于您的兴趣的视频。当您在稍微滚动后点击视频,然后在视频中途决定按后退按钮返回时,您希望应用程序返回您点击视频的位置,滚动量与您所做的相同,而不是重新加载整个主页,再次填充新视频并将您重置到屏幕顶部。
同样,应用程序中的后退按钮也应该这样做。但是,如果您希望后退按钮的行为有所不同,android 确实提供了一种方法来做到这一点。参考这个。
推荐阅读
- angular - 在角度材料中选择所有子复选框时,不选中标题复选框
- css - 图像的 Ionic/Angular CSS 问题
- sql-server - 基于日期创建表 SQL
- c# - 如何在 Xamarin Forms 的 Flex Button 控件模板中处理“单击”事件?
- .net - 使用 Powershell 和 .NET 从 DynamoDB 查询数据
- pine-script - 如果问题嵌套。最后的情节只是以蓝色显示情节。可能出了什么问题?
- android - Android Studio 中的 HAXM 出现“未知错误”
- r - 如何提高我的 R 代码的处理时间
- ruby-on-rails - Rails dbconsole for PostgreSQL 的自动身份验证
- windows - 如何查看之前从断点执行的线程?