我有一个视图模型,并将活动实例传递给它.然而,我并没有强制视图模型只接受我的活动的实例,而是Android的活动.

所以基本上,我使用的是:

class CustomViewModel(val activity: Activity): ViewModel

不是:

class CustomViewModel(val activity: MyActivity): ViewModel

以这种方式通过活动,是否仍然违反了干净的架构或它的罚款?

另外,我正在利用这个活动打开另一个片段.因此,基本上我的视图模型处理的就是这一逻辑.在干净的体系 struct 中,这种逻辑是否应该成为活动/片段本身的一部分?

推荐答案

我有一个视图模型,并将活动实例传递给它.

这真是个坏主意.

然而,我并没有强制视图模型只接受我的活动的实例,而是Android的活动.

这并没有显著改善这个 idea .请记住,当设备经历配置更改(例如,屏幕旋转、暗模式切换)时,您的视图模型实例可能由Activity类的一个、两个或多个实例使用.

无论您试图使用此方法解决什么问题,都可以通过一些其他方法来解决,例如,具有用户界面观察到的react 性API(例如,StateFlow)的视图模型.

我正在用这个活动打开另一个片段

让您的视图模型发出活动观察到的状态(例如,StateFlow).然后,当状态改变时,该活动可以查看当前片段是否是所需的片段,并且如果需要,执行片段事务以切换当前片段以匹配该状态.

这种逻辑是否应该成为活动/片段本身的一部分?

是.

Android相关问答推荐

了解数据加载在Kotlin中的工作原理

如何在Reaction Native中显示Google Map iFrame?

理解修饰符<;方法>;与修饰符<;方法>;:效果和行为解释(Android开发者Jetpack Compose)

即使安装了Chrome和YouTube,Android对action_view a YouTube URL的意图也是空的

安卓喷气背包组成倒计时动画

第一次使用onBackPressed()、NavigateUp()加载时MapView崩溃

在Jetpack Compose中,我可以配置动画以恒定的速度而不是恒定的时间运行吗?

从不可组合回调打开可组合屏幕

Android Jetpack Compose全宽度抽屉优化

Jetpack Compose 中的用户在线指示器

Jetpack Compose 如何使一个项目相对于另一个项目垂直居中

发布 MAUI 应用程序时出现遇到重复程序集错误

以下代码如何在 Android 上运行

如何在 React Native 下载文件之前打开文件管理器并 Select 一个目录

我该怎么做文本计时器

新安装 Expo Go 的 android 设备上的 sdk 46.0.0 (@snack/sdk.46.0.0) 出错

如何在 Jetpack Compose 中禁用 TabRow 或 Tab 中的涟漪效应?

Android Material Date Range Picker - 如何仅更改所选范围日期的文本 colored颜色 ?

Jetpack compose 绘制形状

Jetpack 使用 Canvas 组成半圆