如何在Kotlin中注入var?
我尝试将Dagger2实现到我的Kotlin项目中,但是@Inject
注释存在问题。
在Java中看起来像这样,这工作正常:
public class FooActivity extends Activity { @Inject @Named("accessTokenObservable") public Flowable<Optional<AccessToken>> accessTokenObservable; @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); App.getGraph().inject(this); } }
但是,我如何写Kotlin中的@Inject
?
当我使用这个:
@Inject @Named("accessTokenObservable") var accessTokenObservable: Flowable<Optional<AccessToken>>? = null
我得到这个错误消息:
Error:Dagger does not support injection into private fields
如果我使用lateinit
:
@Inject @Named("accessTokenObservable") lateinit var accessTokenObservable: Flowable<Optional<AccessToken>>
我得到这个错误消息:
Error:Flowable<Optional<AccessToken>> cannot be provided without an @Provides- or @Produces-annotated method.
在Kotlin中注入什么是正确的语法?
我只是用
@Inject lateinit var presenter: ItemsPresenter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... AndroidInjection.inject(this) }
没有任何问题
你必须像这样改变注入代码:
@field:[Inject Named("accessTokenObservable")] lateinit var accessTokenObservable: Flowable<Optional<AccessToken>>
,它会被修复。