title: Cannot create an instance of class view model - Kotlin
body: <p>I'm currently working on a project to practice dependency injection with Dagger-Hilt, however I can't get my ViewModel to instantiate, I've already looked at some other questions on the same topic, most point the issue to Gradle but that didn't fix it for me, all errors in the Stacktrace are from internal classes except for the 2 lines that involve my ViewModel within the MainActivity</p>
  <p>Here is the Stacktrace:</p>
  <pre><code>E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.example.practiceproject, PID: 9873
  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.practiceproject/com.example.practiceproject.ui.MainActivity}: java.lang.RuntimeException: Cannot create an instance of class com.example.practiceproject.ui.viewmodel.DogViewModel
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
      at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
      at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
      at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
      at android.os.Handler.dispatchMessage(Handler.java:107)
      at android.os.Looper.loop(Looper.java:214)
      at android.app.ActivityThread.main(ActivityThread.java:7356)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
   Caused by: java.lang.RuntimeException: Cannot create an instance of class com.example.practiceproject.ui.viewmodel.DogViewModel
      at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:221)
      at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:278)
      at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:112)
      at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:146)
      at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:111)
      at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187)
      at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
      at androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:54)
      at androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:41)
      at com.example.practiceproject.ui.MainActivity.getDogViewModel(MainActivity.kt:15)
      at com.example.practiceproject.ui.MainActivity.onCreate(MainActivity.kt:22)
      at android.app.Activity.performCreate(Activity.java:7802)
      at android.app.Activity.performCreate(Activity.java:7791)
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
      at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
      at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
      at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
      at android.os.Handler.dispatchMessage(Handler.java:107) 
      at android.os.Looper.loop(Looper.java:214) 
      at android.app.ActivityThread.main(ActivityThread.java:7356) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
   Caused by: java.lang.InstantiationException: java.lang.Class&lt;com.example.practiceproject.ui.viewmodel.DogViewModel&gt; has no zero argument constructor
      at java.lang.Class.newInstance(Native Method)
      at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:219)
      at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:278) 
      at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:112) 
      at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:146) 
      at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:111) 
      at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187) 
      at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) 
      at androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:54) 
      at androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:41) 
      at com.example.practiceproject.ui.MainActivity.getDogViewModel(MainActivity.kt:15) 
      at com.example.practiceproject.ui.MainActivity.onCreate(MainActivity.kt:22) 
      at android.app.Activity.performCreate(Activity.java:7802) 
      at android.app.Activity.performCreate(Activity.java:7791) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
      at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
      at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
      at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
      at android.os.Handler.dispatchMessage(Handler.java:107) 
      at android.os.Looper.loop(Looper.java:214) 
      at android.app.ActivityThread.main(ActivityThread.java:7356) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
  </code></pre>
  <p>Here is the ViewModel:</p>
  <pre><code>class DogViewModel @Inject constructor(
  private val getDefaultImages: GetDefaultImages
  ) : ViewModel() {
  
  val dogModel = MutableLiveData&lt;DogModel&gt;()
  val isLoading = MutableLiveData&lt;Boolean&gt;()
  
  fun onCreate() {
      viewModelScope.launch {
          isLoading.value = true
          val result = getDefaultImages()
          if(!result.isNullOrEmpty()) {
              dogModel.value = result[0]
              isLoading.value = false
          }
      }
  }
  </code></pre>
  <p>And this is where I'm declaring it:</p>
  <pre><code>@AndroidEntryPoint
  class MainActivity : AppCompatActivity() {
  private lateinit var binding: ActivityMainBinding
  
  private val dogViewModel: DogViewModel by viewModels()
  
  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      binding = ActivityMainBinding.inflate(layoutInflater)
      setContentView(binding.root)
  
      dogViewModel.onCreate()
  
      dogViewModel.dogModel.observe(this) {
          initRecyclerView(it)
      }
  }
  </code></pre>