从ViewModel访问android资源的最佳做法是什么?

问题描述

我正在努力进入清洁代码模式,遇到了以下问题,但不幸的是我没有找到答案:

viewmodel访问android资源(例如字符串,颜色等)的最佳解决方案是什么

也许我只是错过了一些东西。

解决方法

从中访问android资源的最佳解决方案是什么 ViewModel,如字符串,颜色

我不会这样做。我将emit的资源int表示到视图(活动/片段/对话框)。我可以访问Resources对象,使用它获取真实资源

,

您可以在ViewModel中传递应用程序上下文,对字符串和尺寸afaik效果很好。

如果活动/片段使用自定义主题(不是主应用程序主题),请使用

这种颜色和可绘制对象警告,如果是活动/片段,则使用活动/片段或应用程序中的getColor()上下文可能会有所不同(如果您使用尺寸间接指令(未经测试),可能也会成为问题。)

Blackbelt approach很好,但是如果您必须在资源上做一些工作(例如将Spans添加到字符串),并且想要隔离VM对生成的Spannable进行单元测试,则会受到限制。