如何使用 dagger.android 将活动注入另一个类?

2024-03-27

我正在使用新的 dagger.android 方法来注入活动,但我想知道如果你想注入该怎么办Activity去上课?也许是一个Navigator需要当前活动的类:

package com.abydos.messenger.ui

import android.app.Activity
import com.abydos.messenger.ui.register.RegisterActivity
import org.jetbrains.anko.startActivity
import javax.inject.Inject

class Navigator @Inject constructor(private val activity: Activity) {
    fun register() {
        activity.startActivity<RegisterActivity>()
    }

    ...
}

And in ActivityBindingModule.kt

package com.abydos.messenger.di

import com.abydos.messenger.ui.register.RegisterActivity
import dagger.Module
import dagger.android.ContributesAndroidInjector

@Module
abstract class ActivityBindingModule {
    @ContributesAndroidInjector
    abstract fun contributeRegisterActivity(): RegisterActivity

    ...
}

也许每项活动都可以采用这样的方法?

@Binds abstract fun bindActivity(yourActivity: YourActivity): Activity

但我不喜欢必须为所有活动编写这个想法,有更好的方法吗?


不幸的是 dagger-android-processor 不会自动创建此绑定。

您还需要一个模块:

@Module
interface RegisterModule {
    @Binds
    fun bindActivity(activity: RegisterActivity): Activity
}

在您的 ActivityBindingModule 中:

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

如何使用 dagger.android 将活动注入另一个类? 的相关文章

随机推荐

  • 如何使用 Apache POI 对 Excel 工作表中的行应用背景颜色?

    我正在使用 Apache POI 将数据导出到 Excel 工作表中 效果很好 问题是我需要在生成 Excel 工作表时为 Excel 工作表中的几行应用黄色背景颜色 请告诉我如何在生成时为 Excel 工作表的行应用背景颜色 谢谢 雷迪
  • 单父实体的核心数据性能

    我正在创建一个与核心数据一起使用的框架 在核心数据类上使用我的框架的要求之一是 您想要拥有框架功能的任何实体都需要是我提供给您的实体的子实体和子类 为此 我将该对象称为 Foo 今天我意识到 Core Data 将作为 Foo 子实体的所有
  • 在 Studio 中将大写字母转换为驼峰字母的简单方法?

    我有一堆 C 定义需要移植到 C C 定义是带下划线的大写字母 Net 枚举应该是驼峰式 有什么办法可以自动转换它们吗 一些我不知道的工具 或者也许是一个神奇的正则表达式 eg BOOTSTRAP NOT SUPPORTED gt Boot
  • 如何在进程的内存中搜索特定字符串?

    我对基础知识感兴趣 我不知道从哪里开始 我创建了这个测试程序 include
  • 如何在 LinqPad 中执行 ODATA 扩展

    我正在使用 LINQPad 连接到本地 CRM 组织上的 ODATA 服务 但我不知道如何使用 LINQPad 执行 联接 或遍历关系 这是我的网址 OrganizationData svc New locationSet select n
  • 如何在 Mac 上安装 NVM

    我尝试使用以下命令在 Mac 上安装 NVM curl o https raw githubusercontent com nvm sh nvm v0 39 1 install sh bash 但是 我收到一条错误消息 语法错误接近意外的
  • MPI+p 线程。程序卡在 MPI_Ssend 和 MPI_Recv 上

    我已经调试了这个程序2周了 它只有 93 行 但我仍然找不到错误 请帮我 这个程序在我的笔记本电脑上运行正常 但是当我在我的实验室 上海超算中心和济南超算中心的集群上运行时 就卡住了 这个程序的逻辑非常简单 有 2 个 MPI 进程 一个是
  • php.ini:哪一个?

    我从旧的 apache 迁移到 nginx 和 php 5 3 10 当我尝试修改 php ini 以满足我的需要时 我发现有 3 个 locate php ini etc php5 cgi php ini etc php5 cli php
  • 如何让 EF 将空字符串保留为 NULL?

    在我的域中 NULL 和空字符串之间没有重要区别 如何让 EF 忽略两者之间的差异并始终将空字符串保留为 NULL 空字符串不是字符串属性的默认值 因此这意味着您的代码正在某处设置空字符串 在这种情况下 您有责任处理 如果您在 POCO 中
  • Windows 安装程序中的主要与次要升级

    是否有任何理由不设置安装 以便始终完成主要升级并更改产品代码 我发现支持不同类型的安装需要更多代码 并且 修复 安装似乎通过重大升级更容易工作 而且需要安装的应用程序不是很大 因此不需要 服务包 或补丁安装程序 不会 如果您的应用程序很小并
  • 使用迭代器将数组划分为大小不等的部分

    我有一个数组 需要将其分为 3 元素子数组 我想用迭代器来做到这一点 但最终我迭代到了数组的末尾并出现段错误即使我没有取消引用迭代器 给定 auto foo 1 2 3 4 5 6 7 8 9 10 我正在做 auto bar cbegin
  • ef4 导致 Web 服务中的循环引用

    我有一个 Reason 对象 public class Reason public virtual long Id get set public virtual string Name get set public virtual Comp
  • php 中的 QR 码,无需使用现已弃用的 Google Charts API

    有谁知道有一个 PHP 类可以在您的服务器上生成二维码 而不是依赖现已弃用的 Google Charts API 该 API 并不总是存在 我还认为 如果在服务器上完成批量 QR 码生成将会更快 我还会考虑使用基于 JS 或 Jquery
  • HTML5 音频回调在 safari/iOS 上失败

    我构建了一个应用程序 旨在通过使用 结束 事件在第一个声音完成时播放每个声音 在我的初始版本中 每个声音都有自己的音频元素 结果如下 function play next audio speaker audio sounds i get 0
  • 如何应用多个 DSC 配置?

    这是我的例子 Config AllNodes NodeName localhost PSDscAllowPlainTextPassword True Configuration LocalAdmin Param String Node lo
  • Gnuplot:多个堆叠直方图,每组使用相同的键

    我正在尝试创建一个具有多个堆叠直方图的图 如示例 8here http gnuplot sourceforge net demo histograms html 但对于我的数据来说 每组都有相同的四个类别 如何更改颜色和键 以便每个堆叠列的
  • 我需要在 Cython 中使用 `nogil`

    我有一些 Cython 代码 我想尽快运行 我需要释放 GIL 才能执行此操作吗 假设我的代码与此类似 import numpy as np trivial definition just for illustration cdef dou
  • 是否有一个 jQuery 自动完成插件可以强制选择一个项目?

    There s 自动完成 http docs jquery com Plugins Autocomplete autocomplete 但它不会强制选择某个项目 我需要这样的东西 但它必须强制选择一个项目 然后才能 提交 它存在吗 您可以使
  • 更改VS2017默认新项目位置

    在 Visual Studio 2017 中创建新项目时是否可以更改默认路径 好的 我找到了操作方法 从 工具 gt 选项 gt 项目和解决方案 gt 位置 gt 项目位置 然后在其中输入自定义文件夹 老实说 我更喜欢 Qt Creator
  • 如何使用 dagger.android 将活动注入另一个类?

    我正在使用新的 dagger android 方法来注入活动 但我想知道如果你想注入该怎么办Activity去上课 也许是一个Navigator需要当前活动的类 package com abydos messenger ui import