我正在努力进入clean-code-pattern,遇到了以下问题,不幸的是,我没有找到答案:
从ViewModel访问android资源的最佳解决方案是什么,比如字符串,颜色等等。
也许我只是错过了什么。
从ViewModel访问android资源(如字符串,颜色)的最佳解决方案是什么
我不会这么做的。我将发出
资源的int
表示形式到视图(activity/片段/对话框)。在那里,我可以访问resources
对象使用它来获取真正的资源
您可以在ViewModel中传递应用程序上下文,对于字符串和维Afaik很好。
对于使用这种方法的颜色和绘图,有一点警告,如果activity/片段使用自定义主题(而不是主要的应用程序主题),来自activity/片段或来自应用程序上下文的getColor()可能会有所不同(如果使用间接的维度,而不是测试的维度,这也可能是一个问题)。
Blackbelt方法是很好的,但是如果您需要对资源进行一些工作,比如向字符串添加Spannable,并且您希望单独地从VM对结果Spannable进行单元测试,那么Blackbelt方法可能会受到限制。