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

我在通过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


30秒到达战场
浏览 285回答 2
2回答

宝慕林4294392

您需要@Nullable在字段中添加注释。如文档和代码所示,任何具有简单名称“ Nullable”的注释都可以使用。尽管您可以使用标记Kotlin中的可为空性?,但这不会将Kotlin中的“可为空”信息发布到Java:像Dagger这样的Java处理器无法读取类文件来确定该字段应为可为空。(这可以通过一些Kotlin反射来实现,但是Dagger从v2.17开始不这样做。)尽管您的代码是安全的,但Dagger无法通过读取字节码来确定这一点,并且会引发错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java