Android / Kotlin / Programming

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)
  }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です