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