我在通过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无法通过读取字节码来确定这一点,并且会引发错误。
添加回答
举报
0/150
提交
取消