如何从 ViewModel 引用视图(例如 Spinner 值)

How to reference views (e.g. Spinner value) from ViewModel

我正在尝试引用一个 Spinner 视图及其来自 HomeViewModel 的值,该视图在 HomeFragment 中填充了一个字符串列表并声明在片段的 XML 布局文件中。

此微调器包含一个语言列表。

根据选择的语言,我在HomeViewModel中通过spinner.getSelectedItem().toString()分配了不同的变量。问题是,那里没有定义或引用 spinner,我不会对我的 HomeFragment 进行处理,因为我会 运行 一些重代码,以免阻塞它.如何调用微调器?使用 HomeViewModel 作为一种协程是错误的吗?

你永远不应该这样做,因为它会导致内存泄漏。来自 documentation:

Caution: A ViewModel must never reference a view, Lifecycle, or any class that may hold a reference to the activity context.

如果您创建视图模型的方法并将所选语言作为参数传递并从视图 (Fragment) 中调用该方法会怎么样?