アクティビティとそのすべてのフラグメントの単一のviewModelを使用しています。
したがって、viewmodel
を初期化するには、このセットアップコードをすべてのフラグメントのonActivityCreated
に書き込む必要があります。
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.Java)
}
私はAndroid KTX拡張ページ:( ここを参照 )を徹底的に行っていました
そして、私はこのようにビューモデルを初期化できることがわかりました:
// Get a reference to the ViewModel scoped to this Fragment
val viewModel by viewModels<MyViewModel>()
// Get a reference to the ViewModel scoped to its Activity
val viewModel by activityViewModels<MyViewModel>()
だから私はgradle(app)に以下の依存関係を追加しました:
//ktx Android
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.fragment:fragment-ktx:1.0.0'
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
しかし、アプリケーションでviewModels/activityViewModels
を使用しようとすると、参照が見つかりません。
これらの拡張機能をいくつかの基本的な例で使用する方法についてヘルプが必要です。例を検索しようとしても、見つかりませんでした。
Koinを使用してこれを機能させることができます:
private val viewModel by viewModel<NoteViewModel>()
インポートを使用します
import org.koin.Android.viewmodel.ext.Android.viewModel
依存関係から:
implementation "org.koin:koin-Android-viewmodel:+"
//これを読んだときに+をw/eに最新に変更する
この最新のアルファバージョンを使用します。
dependencies {
implementation 'androidx.fragment:fragment-ktx:1.2.0-alpha01'
}