Ibr*_*zin 3 kotlin android-studio dagger-hilt
我正在使用 Dagger Hilt 进行依赖注入
我有一堂课——
会话管理器
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在这样的活动中调用 setLogin 函数 -
主要活动
@AndroidEntryPoint
class MainActivity @Inject constructor(private val sessionManager: SessionManager) :
AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch {
sessionManager.setLogin(true)
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序
@HiltAndroidApp
class MyApplication : Application() {
}
Run Code Online (Sandbox Code Playgroud)
显现
<application
android:name=".MyApplication"
android:allowBackup="true"/>
Run Code Online (Sandbox Code Playgroud)
如您所见,我已经使用了@AndroidEntryPoint Annotation,但我仍然收到此运行时错误
*java.lang.Class<com.app.app.activities.MainActivity> has no zero argument constructor*
Run Code Online (Sandbox Code Playgroud)
因为MainActivity我认为你不能进行构造函数注入,所以尝试字段注入:
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject
lateinit var sessionManager: SessionManager
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch {
sessionManager.setLogin(true)
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在你应该可以sessionManager在里面使用onCreate
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |