android - Android 中的最佳实践双窗格仅使用 Android 中的 1 个活动和两个片段
问题描述
介绍
在几个教程中讨论了使用两个活动和两个可能的片段设置两个窗格的应用程序,例如参见Lance Gleason 的教程。来自 Android Studio 的存根代码也使用了这种实现。
问题
问题是所有教程都只覆盖了静态实现方法(在XML中使用Fragments)或者使用另外一个activity,主要是在两个pane模式下展示细节。
问题是,Andoroid 表示,从现在开始,单 Activity 应用程序是必经之路:今天我们将引入 Navigation 组件作为构建应用内 UI 的框架,重点是使单 Activity 应用程序成为首选架构.
单一活动解决方案的问题在于,如果您想在配置更改期间保存 Fragment 的状态,事情就会变得困难。
- 虽然Activity重启了,但是Fragment没有
- 在 Activity 中重用已经创建的片段(已经旋转)和管理片段变得乏味且难以维护。参见例如Danielle B提供的解决方案
问题
对于 Android 中的双窗格架构,什么是最佳实践解决方案,仅使用 1 个 Activity,两个片段,同时在配置更改期间保持片段的状态?
亲切的问候
延斯·布赛
解决方案
使用架构组件 (AC) 时,通常使用 ViewModel 类。此类使片段之间的通信成为可能,并在发生配置更改时保持其状态。
查看描述 AC ViewModel 的文档:https ://developer.android.com/topic/libraries/architecture/viewmodel
推荐阅读
- python - 类型错误:bar() 为参数“x”获取了多个值
- elasticsearch - 对特定的嵌套文档进行范围查询
- c - 使用 Pthreads 在 C 中就餐哲学家的分段错误
- r - 比较 R 语言中的两个 XBRL/XML 文件
- powershell - PowerShell 详细参数
- flutter - 使用 Flutter Swiper 淡出不同区域的文本
- css - 制作IE可以支持的对角线
- python - 无法使用 python 请求向 Heroku 服务器发送 POST 请求
- sql - 向现有 SQL Server 表添加计算列,如何填充现有记录?
- scala - 使用scala获取数据框中所有列的数据类型