Dagger2 和依赖组件中的限定符

2023-12-10

我有一个应用程序组件和一个依赖组件。应用程序组件声明显式依赖项,依赖组件可以注入这些依赖项。但是,当我有一个必须使用 @Qualifier 消除歧义的依赖项时,依赖组件无法注入该依赖项。

这是应用程序组件

@Component(modules = [AppModule::class, SchedulersModule::class, StorageModule::class])

@ApplicationScope
interface AppComponent {
    fun inject(app: Application)
    /* other stuff omitted for brevity */
    val bitmapCache: BitmapCache        
    @UiScheduler fun uiScheduler(): Scheduler
}

这是调度程序模块:

@Module
class SchedulersModule {
    @ApplicationScope
    @Provides
    @IoScheduler
    fun provideIoScheduler(): Scheduler = Schedulers.io()

    @ApplicationScope
    @Provides
    @UiScheduler
    fun provideMainThreadScheduler(): Scheduler = AndroidSchedulers.mainThread()
}

这是预选赛:

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class UiScheduler

这是依赖组件:

@Component(
        dependencies = [AppComponent::class],
        modules = [EditEntryActivityModule::class, ViewModelModule::class]
)

@ActivityScope
interface EditEntryActivityComponent {
    fun inject(editEntryActivity: EditEntryActivity)
    fun inject(editEntryFragment: EditEntryFragment)
}

这是调度程序注入片段的方式:

class EditEntryFragment : Fragment() {
    @Inject @UiScheduler lateinit var uiScheduler: Scheduler
    /* other stuff */
}

那么为什么依赖组件可以注入在父组件中声明的位图缓存,而不是 UI 调度程序呢?这是我得到的错误:

error: io.reactivex.Scheduler cannot be provided without an @Provides- or @Produces-annotated method.
  io.reactivex.Scheduler is injected at
      com.test.edit.EditEntryFragment.uiScheduler
  com.test.edit.EditEntryFragment is injected at
      com.test.edit.EditEntryActivityComponent.inject(arg0)
1 error

在类 EditEntryFragment 中使用 @field:UiScheduler

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dagger2 和依赖组件中的限定符 的相关文章

  • 带身份验证的 MediaPlayer RTSP 视频流

    我能够在未经授权的情况下从网络摄像机流式传输视频 但现在我需要在授权的情况下执行此操作 我发现很少有信息表明 Android 不支持 RTSP 身份验证 但我发现另一条信息表明 通过使用该方法添加标头 可以在 API 级别 14 中实现身份
  • 是否仍然建议使用 AsyncTask 在后台加载 listView 项目?

    背景 我听说有一些在后台加载数据的新解决方案比 AsyncTask 更值得推荐 例如loaders http developer android com reference android content Loader html 问题 As
  • 从 admob 独立 SDK 切换到 Google Play 服务 SDK 时,apk 大小会膨胀

    使用 Admob SDK 我的 apk 大小为 230Kb 当用 google play services SDK 替换 Admob SDK 时 它是 1 5MB 膨胀了 6 倍以上 我想完整的 Google Play 服务客户端 SDK
  • Android - 启用和禁用蓝牙 - SDK 3 (OS 1.5) - 以编程方式?

    我编写了代码来以编程方式启用和禁用各种功能 例如 Wifi 振铃模式 飞行模式 您将在电源切换小部件中看到的所有内容 我还没有找到如何做的一个是蓝牙 看来在 SDK level 3 OS 1 5 中没有漂亮的蓝牙管理器类 有没有人指出关于启
  • Android 服务 START_STICKY START_NOT_STICKY

    我需要让我的服务始终在后台运行 并使用 startService 函数启动我的服务 无论应用程序的状态如何 我都不想重新启动服务 这是我的观察 START STICKY gt 如果应用程序启动 则服务正在重新启动 当应用程序关闭时 服务也会
  • Android:NotificationCompat.MediaStyle 操作按钮不执行任何操作

    我有一个简单的 Android 应用程序 其中包含一个Activity and a Service源自于MediaBrowserServiceCompat 我已成功将其设置为通过使用播放我的主要活动中的音频MediaBrowserCompa
  • Android 上 Java 库中的代码出现 NoClassDefFoundError

    我的用户经常遇到错误 应用程序在启动期间崩溃 当应该加载 MainActivity 时 VM 显然找不到该类 我不明白为什么 该应用程序的架构是 我的免费版和专业版都使用一个通用项目 不知道是否相关 请参阅下面的堆栈跟踪 有什么想法吗 ja
  • Android物理引擎[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在研究了 3D 游戏编程之后 很快就明白了为什么物理引擎非常有用 Android 支持哪些物理引擎并且可以在 Android 上使用 关于
  • 按钮上方带有文本的单选按钮

    我是 Android 新手 我需要在我的活动中添加单选按钮 但我需要将文本放在项目符号按钮的顶部 请提供任何帮助 我发现了以下内容 尽管我不明白 drawable in 选择器和 style Tab 样式是什么 顶部带有文本的单选按钮 ht
  • 如何将您的终端与 Android 模拟器连接

    我尝试导航到 android 工具文件夹并输入 adb shell 命令 但它似乎不起作用 我的终端似乎只能识别命令的 adb 部分 并给我一条错误消息 我究竟做错了什么 通过键入列出所有连接的设备adb devices 检查是否列出了任何
  • 在一个react-native项目中使用谷歌地图和FCM

    I want to use google map and FCM in one react native project first I added FCM in project everything was okay but when I
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 特定铃声 firebase 通知 xamarin.android

    How i can force the push notification to run ringtone instead of default notification sound is there any way to ovveride
  • 调用属于Fragment的Activity的函数

    我正在与多个Fragments在 Android 下 我对如何从嵌入式应用程序发送和接收数据感到困惑 为了简单的解释 我有一个ListFragment and a MapFragment使用解释的方法here https stackover
  • 测试应用内结算:“发布者无法购买此商品”

    我的应用程序似乎已准备好在我的设备上进行应用内购买程序的 现实生活 测试 但是 我在 Play 商店中收到 发布商无法购买此商品 的错误消息 现在 我应该如何测试这个 我不想通过仅用于测试的虚拟帐户重新安装手机来丢失手机的配置 在开发者控制
  • 如何根据受保护的 String doInBackground 方法中 AsyncTask 的结果调用 Toast.makeText() ?

    我从 AsyncTask 中的数据库中获取数据 如果它为空 我想吐司一个警告文本 我在 AsyncTask 中尝试过 但我了解到它不是在工作线程中调用的 这是我的 doInBackground 方法 protected String doI
  • 如何以相同的意图从相机获取全尺寸图片和缩略图

    我一直需要找到这个问题的解决方案 我已经从这个社区搜索并测试了许多解决方案 但任何人都适合帮助我 我有两个活动 第一个活动拍摄一张照片并将其发送到另一个活动 该活动有一个 ImageView 来接收该照片 直到这里我遇到问题 以及一个在数据
  • 不幸的是 Project_Name 已停止

    我有一个简单的应用程序 您可以在文本视图中输入文本并按提交 它会在另一个活动中显示文本 然而 当我按下提交时 给我消息 不幸的是 发送已停止 我查看了SO上的其他线程 但是不幸的是 myfirstproject 在 java 中停止工作错误
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • 在自定义对话框中设置文本视图

    我创建了一个自定义对话框 但无法将文本设置到 java 对话框布局中的文本视图中 并且我的程序崩溃了 我的错误是什么 public class Total CBC extends Activity Override protected vo

随机推荐

  • 如何一起使用mapstruct和springboot bean? @自动连线

    Mapper componentModel spring public interface DemoConvert public static DemoConvert INSTANCE mappers getMapper DemoConve
  • Spock:从 CSV 文件读取测试数据

    我正在尝试编写一个优雅的 Spock 规范 该规范将从 CSV 文件中读取非常大的测试数据 而无需将所有数据加载到内存中 我正在寻求您的反馈 以了解如何做得比我目前在这里做得更好 假设我的简化 CSV 文件如下所示 1 2 3 4 5 6
  • 在 Python 列表中的每第 n 个元素之后插入元素

    假设我有一个像这样的 Python 列表 letters a b c d e f g h i j 我想在每个第 n 个元素之后插入一个 x 假设该列表中的三个字符 结果应该是 letters a b c x d e f x g h i x
  • 如何使用本地通知-Xamarin.Android 在服务内调用 BroadCastReceiver

    我正在研究一个报警应用它在预定时间工作 我希望它在用户启动或未启动应用程序时工作 两者 这意味着应用程序将像通常的警报一样发出通知 现在我想打电话给broadcastReceiver里面一个Service这样 它就会执行该操作 我注意到了什
  • 禁用父元素的 onclick 事件

    假设我有一个带有 onclick 事件的元素 其中还有另一个元素 如何禁用子元素的 onclick Example h3 h3
  • 屏蔽电话号码的文本框视图

    我正在尝试格式化一个文本框 以便当用户可以输入电话号码时 它会自动将其设置为以下格式 999 999 9999 我尝试使用 MaskedEditExtender 它可以工作 但它的作用与我需要的完全相反 当我单击该字段时 它显示正确的格式
  • 来自 ES6 类的原型继承[重复]

    这个问题在这里已经有答案了 我有一个旧的代码库 其中充满了某个外部类的子类 使用原型继承 最近 这个外部类已被移植到 ES6 类 但也有我想使用的新功能 原型继承不再起作用 我想知道是否有可能让它起作用 即使它有一些丑陋的黑客 这基本上就是
  • Google 地图 - Android 应用程序未加载 - 空对象引用

    我目前正在尝试开发一个与谷歌地图集成的Android应用程序 目前我很难找到错误 因为代码来自谷歌网站本身 只不过它是一个SupportMapFragment 如果您知道 SupportMapFragment 的实际教程也会很棒 实际 因为
  • mysqli_begin_transaction()和mysqli_autocommit有什么区别

    Does mysqli begin transaction 实现相同的功能mysqli autocommit mysqli autocommit 永久设置自动提交模式 这意味着如果你将其设置为0 然后提交事务 模式将保持为0 mysqli
  • 如何在android中读取特定联系人的收件箱短信?

    我正在尝试读取来自内容提供商的短信 我有以下代码 Uri uri Uri parse SMS URI INBOX String whereClause address String whereArgs address String proj
  • JavaFX EXCEPTION_ACCESS_VIOLATION

    我对 JavaFX 桌面应用程序有疑问 特别是 3D 渲染功能 每次我尝试构建和启动 JavaFX 应用程序时 JVM 都会崩溃 并且会收到类似于以下错误的错误 A fatal error has been detected by the
  • 找不到要加载的 DSO:libhermes-executor-release.so

    log Time Tag Message 15 56 52 131 SoLoader couldn t find DSO to load libjscexecutor so 15 56 54 275 SoLoader couldn t fi
  • 如何在powershell中向异步作业添加回调函数并获取返回数据

    我一直在互联网上搜索并组合了许多不同的代码片段 但我只是没有成功地为我的异步作业创建回调 我的想法是 我想运行多个作业 并且使用回调方法 我将能够解析不同作业的输出 以更改主脚本中的某些状态和输出 目前我有这个 虽然事件被调用 但我无法获得
  • 找不到 JSP 文件可能是 spring 中的一个错误吗

    我在我的应用程序中遵循了 Spring Boot 的官方文件和包结构 但我仍然收到白标签页面错误 大多数答案和建议都不能解决这个问题 这可能是 Spring Boot 中的一个错误吗 下面是我放置代码的方式以及文件和文件夹的排列结构 应用程
  • 自定义视图,不需要 xml 中的layout_width

    Android SDK有TableLayout容器
  • 仅在使用 iTextSharp 进行生产时出现“文档未打开”错误

    我在 iTextSharp 中收到 文档未打开 错误 但仅限于生产环境 该代码在我的开发机器和暂存中运行良好 我在阶段服务器上的 Temp 文件夹中设置了相同的权限 public static byte ConvertHtmlToPdf s
  • 使用 Java 在多个文本文件中查找并替换一个单词?

    如何使用 Java 在多个文本文件中查找并替换单词 这是我为单个人做的方法String public class ReplaceAll public static void main String args String str We wa
  • Android 导航架构组件 - 获取当前可见片段

    在尝试导航组件之前 我曾经手动执行片段事务并使用片段标签来获取当前片段 val fragment MyFragment supportFragmentManager findFragmentByTag tag MyFragment 现在在我
  • 使用 NHibernate 测试连接参数

    我们有一个程序 用户可以在其中指定他们的数据库连接参数 通常的嫌疑人包括主机 端口 用户名 密码和表名 我们使用 NHibernate 连接到数据库 我们想要做的是能够使用 NHibernate 构建配置 然后在继续其他操作之前测试连接参数
  • Dagger2 和依赖组件中的限定符

    我有一个应用程序组件和一个依赖组件 应用程序组件声明显式依赖项 依赖组件可以注入这些依赖项 但是 当我有一个必须使用 Qualifier 消除歧义的依赖项时 依赖组件无法注入该依赖项 这是应用程序组件 Component modules A