android / android/architecture-samples
Using Hilt2.48.1 version, it is not compatible with BaseViewModel
- Dominant language
- Kotlin
- Stars
- 45.8k
- Forks
- 11.9k
- PR merge metrics
- No merged PRs in 30d
Description
The BaseActivity I use encapsulates BaseViewModel, and an error is reported during compilation. The code and error message are as follows
error message:
public abstract static class SingletonC implements AppApplication_GeneratedInjector,
^
Injection of an @HiltViewModel class is prohibited since it does not create a ViewModel instance correctly.
Access the ViewModel via the Android APIs (e.g. ViewModelProvider) instead.
Injected ViewModel: com.maxvision.myapplication.YourViewModel
com.maxvision.myapplication.YourViewModel is injected at
com.maxvision.myapplication.base.BaseActivity.viewModel
com.maxvision.myapplication.MainActivity is injected at
com.maxvision.myapplication.MainActivity_GeneratedInjector.injectMainActivity(com.maxvision.myapplication.MainActivity) [com.maxvision.myapplication.AppApplication_HiltComponents.SingletonC → com.maxvision.myapplication.AppApplication_HiltComponents.ActivityRetainedC → com.maxvision.myapplication.AppApplication_HiltComponents.ActivityC]
code show as below:
`abstract class BaseActivity : AppCompatActivity() {
@Inject
lateinit var viewModel: VM
lateinit var binding: DB
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, getLayoutResId())
binding.lifecycleOwner = this
}
//获取布局资源id
abstract fun getLayoutResId(): Int
}`
`
@HiltViewModel
class YourViewModel @Inject constructor(
private val apiService: ApiService
) : BaseViewModel() {
}
`
`
@AndroidEntryPoint
class MainActivity : BaseActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun getLayoutResId(): Int = R.layout.activity_main
}
`
`
@HiltAndroidApp
class AppApplication : Application() {
override fun onCreate() {
super.onCreate()
}
companion object {
private val sInstance: Application? = null
}
}
`
Contributor guide
Research direction
Reproduce the compilation failure using the shown BaseActivity, YourViewModel, MainActivity, and AppApplication entry points with Hilt 2.48.1. Inspect how the sample handles ViewModel creation and define done as either confirming the incompatibility with a documented supported pattern or identifying a focused sample change that compiles successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100