gpt4 book ai didi

java - NfcAdapter 不可为空,但由@Provides @Singleton @javax.annotation.Nullable android.nfc.NfcAdapter 提供

转载 作者:搜寻专家 更新时间:2023-11-01 08:21:06 26 4
gpt4 key购买 nike

我在通过 Dagger 模块返回可为空的 NfcAdapter 时遇到问题。在这里:

  @Provides
@Singleton
@Nullable
public NfcAdapter provideNfcAdapter() {
return NfcAdapter.getDefaultAdapter(context);
}

但是项目无法构建,我收到错误消息:

error: [dagger.android.AndroidInjector.inject(T)] android.nfc.NfcAdapter is not nullable, but is being provided by @Provides @Singleton @javax.annotation.Nullable android.nfc.NfcAdapter

如何解决?我为我的 BluetoothAdapter 提供了类似的方法,它按预期工作。

我尝试在我的 Activity 中按如下方式初始化它:

var nfcAdapter: NfcAdapter? = null @Inject set

最佳答案

您需要向该字段添加一个 @Nullable 注释。任何具有简单名称“Nullable”的注释都可以,如 the docs 中所列。和 the code .

尽管您可以使用 ? 在 Kotlin 中标记可空性,但这不会将“可空”信息从 Kotlin 发布到 Java:像 Dagger 这样的 Java 处理器无法读取类文件来确定该字段意味着可以为空。 (这是 possible through some Kotlin reflection ,但从 v2.17 开始,Dagger 不会这样做。)尽管您的代码是安全的,但 Dagger 无法通过读取字节码来确定这一点,它会抛出错误。

关于java - NfcAdapter 不可为空,但由@Provides @Singleton @javax.annotation.Nullable android.nfc.NfcAdapter 提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50928857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com