Ral*_*ann 4 java android kotlin dagger-2
我尝试将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);
}
}
Run Code Online (Sandbox Code Playgroud)
但我怎么@Inject在Kotlin 写这条线?
当我使用这个时:
@Inject
@Named("accessTokenObservable")
var accessTokenObservable: Flowable<Optional<AccessToken>>? = null
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Error:Dagger does not support injection into private fields
Run Code Online (Sandbox Code Playgroud)
如果我使用lateinit:
@Inject
@Named("accessTokenObservable")
lateinit var accessTokenObservable: Flowable<Optional<AccessToken>>
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Error:Flowable<Optional<AccessToken>> cannot be provided without
an @Provides- or @Produces-annotated method.
Run Code Online (Sandbox Code Playgroud)
在Kotlin注入一些东西的正确语法是什么?
Tub*_*uby 11
我只是用
@Inject
lateinit var presenter: ItemsPresenter
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
...
}
Run Code Online (Sandbox Code Playgroud)
没有任何问题
您必须像这样更改注入代码:
@field:[Inject Named("accessTokenObservable")]
lateinit var accessTokenObservable: Flowable<Optional<AccessToken>>
Run Code Online (Sandbox Code Playgroud)
,并且它将被修复。
| 归档时间: |
|
| 查看次数: |
4436 次 |
| 最近记录: |