前提・実現したいこと
ViewModel内でシステムサービスを利用したいと考えており、そのためにContextを取得する必要があります。そこで、下記のようにコードを書いたところ、エラーが出力されてしまいます。
kotlin
1class ActivityViewModel(app: Application) : AndroidViewModel(app) { 2 3 private val c = getApplication<Application>().applicationContext.getSystemService( 略 ) 4}
どのように書けばよいのか教えていただきたいです。
発生している問題・エラーメッセージ
Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
試したこと
kotlin
1class ActivityViewModel(application: Application, private val context: Context) : AndroidViewModel(application) { 2 3 private val c = context.getSystemService( 略 ) 4}
上記のように、コンストラクタでContextを取得したところ、うまく動作しますが、以下のような警告が出されてしまいます。
This field leaks a context object
補足
以下の記事を参考にして、ViewModelからContextの使用方法を学びました。
How to get Context in Android MVVM ViewModel
回答1件
あなたの回答
tips
プレビュー