2022 Aug. 13.
出典
by ViewModels() を使って ViewModel を取得する方法 | 穀風
Androidアプリ:ViewModel と LiveData + オブザーバ でUIとデータを管理(Kotlin編) – KOMMLOGG
"val hogeViewModel = ViewModelProvider(this).get(HogeViewModel::class.java)"でのViewModelインスタンス取得はdeprecatedとなった。
Activity/Fragment内で"val hogeViewModel: HogeViewModel by viewModels()"とする。
build.gradle(Module:app)
dependencies { implementation "androidx.fragment:fragment-ktx:1.5.2" }
次が必要と書かれたサイトもあるが、書かなくても動作した
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' implementation "androidx.activity:activity-ktx:1.5.1"
MainActivity.kt
class MainActivity : AppCompatActivity() { // ViewModelインスタンス生成 private val myViewModel: MyViewModel by viewModels() // オブザーバー作成 val myStringObserver = Observer<String> { it -> // "it ->"は省略可能 binding.textView01.text = it } // myViewModel.myStringのオブザーブをセット myViewModel.myString.observe(this, myStringObserver) }
MyViewModel.kt
class MyViewModel: ViewModel() { // String型LiveData変数を作成 val _myString = MutableLiveData<String>("") val myString: LiveData<String> get() = _myString }