ViewModelですがbyを使わずにViewModelProviderで呼び出せるようなので試してみました。
まずはViewModelを使うためのライブラリをインストールします。
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' implementation 'androidx.activity:activity-ktx:1.6.1' implementation 'androidx.fragment:fragment-ktx:1.5.5'
ViewModelは下のように定義します。
class MyViewModel: ViewModel() { var value = 0 }
Activity内でのViewModelの取得方法は下の通りです。
byを使って呼び出す事でActivityが同じものであればViewModelの同じインスタンスが返ってきます。
val viewModel: MyViewModel by viewModels()
ViewModelProviderを使う場合、下のように記述します。
条件によってclass名が変わる場合などはこちらの方が使いやすそうです。
val viewModel = ViewModelProvider(this)[MyViewModel::class.java]