ViewModelでstringResource等を使用したい場合
要約
ViewModelではstringResource等は使用せずID(R.string.text_id)を返すべき
詳細
Android公式の投稿によると、ViewModel内ではライフサイクルを持つオブジェクトの操作は避けるべき(The recommended practice is to avoid dealing with objects that have a lifecycle in ViewModels.)とあります。
例えば、ユーザーが日本語から中国語へ言語変更をしてもViewModelは変更されません。
そのため、UIに両言語が混在する可能性があります。
単一の言語のみでしか表示しないとしても、テストが難しくなったり、メンテナンス性が落ちます。
以上のことから、ViewModelではライフサイクルを持つオブジェクトの使用は避けるべきです。
例
class TestViewModel : ViewModel() {
val testVariable = ObservableInt()
fun testFunction() {
testVariable.set(R.string.text_id)
}
}