I am using Hilt. After updating to 1.0.0-alpha03
I got warnings that @ViewModelInject
is deprecated and I should use @HiltViewModel
. But when I change it I got an error:
java.lang.RuntimeException: Cannot create an instance of class com.example.LoginViewModel
...
Caused by: java.lang.NoSuchMethodException: com.example.LoginViewModel.<init> [class android.app.Application]
Previous my ViewModel looked like this:
class LoginViewModel @ViewModelInject constructor(
application: Application,
private val repository: RealtimeDatabaseRepository
) : AndroidViewModel(application)
Now it looks like this:
@HiltViewModel
class LoginViewModel @Inject constructor(
application: Application,
private val repository: RealtimeDatabaseRepository
) : AndroidViewModel(application)
Fragment where ViewModel is injected:
@AndroidEntryPoint
class LoginFragment : Fragment(R.layout.fragment_login)
{
private val viewModel: LoginViewModel by activityViewModels()
}
Injected class:
@Singleton
class RealtimeDatabaseRepository @Inject constructor() { }
When I deleted private val repository: RealtimeDatabaseRepository
from ViewModel constructor it is working
I was using hilt version 2.30.1-alpha
when I updated to 2.31.2-alpha
, as USMAN osman suggested, the error is gone.