How to show snackbars from Composables or ViewModels on a multi-module, single activity, Compose only, project(如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏)
问题描述
在多模块、单模块上显示Snackbar的最佳方式是什么 活动,是否仅撰写项目?项目依赖关系图如下所示:
项目的唯一活动在app
模块内,它just sets the NavHost
as content。
将在NavHost
上显示的每个feature
模块provides a list of composable screens。
每个屏幕都有its own Scaffold
,因此可以轻松地从每个屏幕的ViewModel
显示快捷栏。
feature
模块feature-debug
,它显示在each feature
module提供的a list of composable屏幕上,称为调试节。它用于允许任何feature
模块在调试屏幕内自动显示某些设置。
每个调试节都有自己的ViewModel
,因此它的工作方式与屏幕完全相同。但它缺少一个脚手架,因为它只占了屏幕的一部分:
+-------------------------+
| Debug screen |
|-------------------------+
| |
| Feature A debug section |
| |
|------------------------ +
| |
| Feature B debug section |
| |
|------------------------ +
| |
| Feature C debug section |
| |
|------------------------ +
| |
| Feature D debug section |
| |
+------------------------ +
因此,我不确定如何在feature-debug
屏幕的Scaffold上显示Snackbar,该Snackbar来自在另一个feature
模块中声明的、没有任何类可见性的feature-debug
模块。
推荐答案
我只会为您的整个应用程序使用一个Snackbar。它需要包含在用户界面层次结构的根级别,并可通过全局对象访问。这可以通过使用从Application继承的类并在该类中放置一个方法来处理SnackBar的显示来完成。
有一个示例应用程序展示了如何做到这一点。演示应用程序可在以下位置下载:
https://github.com/JohannBlake/Jetmagic
运行该应用程序时,打开导航任务栏并选择任何导航项目。在出现的屏幕上,单击标记为Return value from another screen
的按钮。这将把您带到另一个屏幕,您可以在其中选择一个项目并返回到上一个屏幕。所选项目将显示在快餐栏中。此快餐栏在整个应用程序中都是全局的。
这篇关于如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在多模块、单活动、仅合成、项目上显示可组合或视图模型中的快捷栏


- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01