为了账号安全,请及时绑定邮箱和手机立即绑定

NfcAdapter不可为空,但由@Provides @Singleton @ javax

NfcAdapter不可为空,但由@Provides @Singleton @ javax

30秒到达战场 2021-04-05 04:56:27
我在通过Dagger模块返回可为空的NfcAdapter时遇到问题。这里是:  @Provides  @Singleton  @Nullable  public NfcAdapter provideNfcAdapter() {    return NfcAdapter.getDefaultAdapter(context);  }但是,该项目无法生成,并且我收到错误消息:错误:[dagger.android.AndroidInjector.inject(T)] android.nfc.NfcAdapter不能为空,但由@Provides @Singleton @ javax.annotation.Nullable android.nfc.NfcAdapter提供如何解决?我为我的BluetoothAdapter提供了类似的提供方法,它可以按预期工作。我尝试在“活动”中按以下方式对其进行初始化:var nfcAdapter: NfcAdapter? = null @Inject set
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您需要@Nullable在字段中添加注释。如文档和代码所示,任何具有简单名称“ Nullable”的注释都可以使用。

尽管您可以使用标记Kotlin中的可为空性?,但这不会将Kotlin中的“可为空”信息发布到Java:像Dagger这样的Java处理器无法读取类文件来确定该字段应为可为空。(这可以通过一些Kotlin反射来实现,但是Dagger从v2.17开始不这样做。)尽管您的代码是安全的,但Dagger无法通过读取字节码来确定这一点,并且会引发错误。


查看完整回答
反对 回复 2021-04-14
  • 2 回答
  • 0 关注
  • 283 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信