Android studio 活动没有零参数构造函数-匕首柄
我用匕首柄注射依赖性 我有一节课- 会话管理器Android studio 活动没有零参数构造函数-匕首柄,android-studio,kotlin,dagger-hilt,Android Studio,Kotlin,Dagger Hilt,我用匕首柄注射依赖性 我有一节课- 会话管理器 class SessionManager (context: Context){ private val dataStore: DataStore<Preferences> = context.createDataStore( name = "session" ) companion object{ val IS_LOGIN = preferencesKey<Boolean>(name
class SessionManager (context: Context){
private val dataStore: DataStore<Preferences> = context.createDataStore(
name = "session"
)
companion object{
val IS_LOGIN = preferencesKey<Boolean>(name = "is_login")
}
suspend fun setLogin(isLogin: Boolean){
dataStore.edit {
preferences ->
preferences[IS_LOGIN] = isLogin
}
}
}
MyApplication
@HiltAndroidApp
class MyApplication : Application() {
}
清单
<application
android:name=".MyApplication"
android:allowBackup="true"/>
如您所见,我使用了@AndroidEntryPoint注释,但仍然出现此运行时错误
*java.lang.Class<com.app.app.activities.MainActivity> has no zero argument constructor*
*java.lang.Class没有零参数构造函数*
对于main活动
我认为您无法进行构造函数注入,因此请尝试字段注入,如下所示:
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject
lateinit var sessionManager: SessionManager
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch {
sessionManager.setLogin(true)
}
}
}
现在您应该能够在
onCreate中使用sessionManager
进行MainActivity
我认为您无法进行构造函数注入,因此请尝试字段注入,如下所示:
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject
lateinit var sessionManager: SessionManager
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch {
sessionManager.setLogin(true)
}
}
}
现在您应该能够在onCreate中使用sessionManager