android / android/architecture-samples

Using Hilt2.48.1 version, it is not compatible with BaseViewModel

Open
#983 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.