从匕首2获取空实例

编程入门 行业动态 更新时间:2024-10-19 00:24:52
本文介绍了从匕首2获取空实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在开发一个应用程序,其中定义了多层并使用dagger2进行实例管理等.我有管理器,服务和视图.

I am developing an app in which I have defined multiple layers and using dagger2 for instance management etc. I have managers, services and views.

我正在尝试在@Module中设置管理器,例如:

I am trying to set manager in a @Module like:

@Module class ManagerModule { @Provides @Singleton fun provideDatabaseContext(userManager: UserManager) : DatabaseContext { var databaseContext : DatabaseContext = DatabaseContext(); databaseContext.setUserManager(userManager) return databaseContext } @Provides @Singleton fun provideUserManager(store : PersistenceStore<DAOUser>) : UserManager = UserManager(store) }

其中DatabaseContext是这样的:

where DatabaseContext is like this:

class DatabaseContext : IDatabaseContext { private lateinit var userManager: IUserManager override fun getUserManager(): IUserManager { return userManager; } fun setUserManager(userManager: IUserManager){ this.userManager = userManager; } }

当我在服务中注入DatabaseContext时是这样的:

and when I have injected DatabaseContext in my service like this:

class UserService @Inject constructor(var databaseContext: IDatabaseContext) : IUserService { override fun addUser(dtoUser: DTOUser, callback: ResponseCallback<Response<Void>>) { var daoUser : DAOUser = DAOUser(dtoUser.name, dtoUser.email, dtoUser.password) databaseContext.getUserManager().add(daoUser); callback.onCompletion(Response<Void>()) } }

除了getUserManager()一直为空,一切都工作正常,即使我有setUserManager方法并且正在ManagerModule中进行设置(如上所示).任何帮助,将不胜感激.谢谢

Everything is working fine except getUserManager() which is coming null all the time even though I have setUserManager method and I am setting in ManagerModule as you can see above. Any help would be appreciated. Thanks

这是ServicesModule

Here is ServicesModule

@Module class ServicesModule { @Provides @Singleton fun provideUserService() : UserService = UserService(DatabaseContext()) @Provides @Singleton fun provideAuthenticationService() : AuthenticationService = AuthenticationService(FirebaseAuth.getInstance()) }

推荐答案

我在ServicesModule方法中将其传递给了错误.所以我必须以这种方法传递它,然后它才能起作用:

I was passing it wrong in the method of ServicesModule. So I had to pass it in the method like this and it worked:

@Provides @Singleton fun provideUserService(databaseContext : DatabaseContext()) : UserService = UserService(databaseContext )

更多推荐

从匕首2获取空实例

本文发布于:2023-10-31 04:30:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545008.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:匕首   实例

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!