使用 Hilt 提供 Activity 实例

2024-05-02

我该如何翻译这样的内容:

@Module
abstract class BaseActivityModule<A : AppCompatActivity> {
    @Binds
    abstract fun provideActivity(activity: A): AppCompatActivity

    companion object {
        @Provides
        @ActivityContext
        fun provideContext(activity: AppCompatActivity): Context = activity
    }
}

@Module
abstract class SomeActivityModule : BaseActivityModule<SomeActivity>()

所以可以像下面这样使用后者:

@ActivityScope
class UtilsClass @Inject constructor(
    private val activity: AppCompatActivity,
    ...
){...}

我已经迁移了一个游乐场项目dagger to hilt一切都非常顺利,但我偶然发现了这个用例。我已经更改了代码,因此我不再需要该实例,但好奇心仍然存在。

现在我们是否可能不需要这种设置:

@ActivityScope
@ContributesAndroidInjector(modules = [SomeActivityModule::class])
abstract fun someActivity(): SomeActivity

我还没有尝试过这个代码,如果它不起作用,请 CMiMW,
根据文件here https://developer.android.com/training/dependency-injection/hilt-android#predefined-qualifiers,您可以使用应用程序上下文和活动上下文的预定义限定符。

你的代码可能看起来像这样

@ActivityScoped
class UtilsClass @Inject constructor(
@ActivityContext private val activity: Context,
... 
){
 ...
 val myActivity = if(context is MyActivity) context as MyActivity else throw ......  // check if its provided context was desired activity
 ...

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

使用 Hilt 提供 Activity 实例 的相关文章

随机推荐

  • 将 char 数组转换为 hex 数组 (C++)

    我的问题是将字符数组转换为十六进制数字数组 我需要从字符数组中取出 2 个字符并将它们转换为一个十六进制数字 这是我的输入 unsigned char text 1024 06fb7405eba8d9e94fb1f28f0dd21fdec5
  • Rails 6 + Capistrano - 没有这样的 puma.sock 文件

    拜托 我有一个大问题10多个小时了 每当我使用 Capistrano 和 Puma 在 Rails 中运行应用程序部署并重新启动 nginx 时 当我尝试访问我的 Web 时 我会看到此错误 在此输入图像描述 https i stack i
  • php artisan migrate 命令错误:找不到驱动程序

    我的操作系统是windows Illuminate Database QueryException 找不到驱动程序 SQL 从 information schema tables 中选择 其中 table schema blog 且 tab
  • .net Framework 4 中的 nameof 表达式

    Visual Studio 2015 和 c 6 中引入了 nameof 表达式 nameof C 和 Visual Basic 参考 https msdn microsoft com en us library dn986596 28v
  • 浮点转换和性能

    我知道在浮点数和整数之间进行转换时可能会出现错误 但是性能如何 请忽略准确性问题 一般来说 如果我对不同算术类型的操作数 即不同的浮点类型 例如 float and double 和浮点 整数类型组合 例如float and int 是否存
  • 如何在 REST(Jersey) 中创建过滤器或处理程序来包装 JAX-RS 请求?

    我的 jax rs 应用程序中有一些资源 我想在 jax rs 请求进入由 javax ws rs Path 注释的资源之前验证它 那么 我如何为我的资源创建处理程序或过滤器 我搜索了很多网站 他们的建议是使用代理或 servlet 过滤器
  • Aurelia 验证:对同一属性应用一些关于更改的规则和一些关于模糊的规则

    我有一个值的输入字段 该值应该正好有 5 位数字 我想在立即输入数字以外的字符 onChange 时显示错误 但仅在模糊时显示字符串长度不足的错误 我的规则目前看起来是这样的 ValidationRules ensure myInput m
  • 根据要求在 Python/Matplotlib 中为热图着色

    我正在尝试制作具有指定颜色要求的热图 我想为数据设置一个间隔并判断为ok并将其着色为绿色 其余结果应着色为红色 有谁知道如何做到这一点吗 我附上了一个使用 pandas 和 matplotlib 的简单示例 以便更好地理解 import n
  • java.io.IOException:无效的密钥库格式

    有谁知道如何解决这个问题 我尝试了很多方法 但没有一个有效 当我单击更多详细信息时 我得到以下信息 at sun security provider JavaKeyStore engineLoad Unknown Source atsun
  • 数字字符串到整数列表?

    例如 我面临的任务是转换一串混合数字 1 3 5 8 10 我的目标是将这些数字作为整数放入列表中 我有知识和诀窍来分割字符串和 int 它们以将它们转换为整数 但问题来了how我正在做 我遇到的具体问题是循环遍历字符串 查找字符并将它们转
  • 空合并运算符覆盖

    我知道这样做是没有意义的 xstring ToLower xx 因为我打电话ToLower 在检查 null 之前被调用 有没有办法解决这个问题 保持语法整洁 我可以覆盖 字符串的运算符 以便它只调用ToLower when xstring
  • Android开放电话应用

    我只想打开 Android 设备的电话应用程序 我不想向该应用程序提供电话号码 只是想打开它 我正在使用手机应用程序的包名称来打开它 因为我可以使用下面的代码通过该包名称打开任何我想要的应用程序 Intent launchIntent ge
  • 在 Photoshop 脚本中打开和关闭多个图层

    我在 Photoshop 中有 6 个组 每个组内包含多个图层 我希望打开 关闭每个组中的图层以创建图像的每种可能的组合 有人能指出我正确的方向吗 我从来没有在 Photoshop 中编写过脚本 而是尝试自己解决这个问题 我自己对 CS5
  • Pulumi Azure Pipeline 任务

    我是 Pulumi 的新手 所以目前我正在努力尝试在我的 Azure 发布管道中运行它以创建我的基础设施 在开发过程中 我使用本地存储来存储我的 pulumi 状态 pulumi login local 我已经创建了我的堆栈 dev 是其中
  • 如何使用 javascript 从 Audio Element 录制音频

    我正在使用 HTML5 和 Javascript 制作录音机 并且不想包含任何第三方 API 我的第一步是使用以下命令创建音频检索器和播放器
  • `env.BRANCH_NAME` 变为 `PR-1`

    我们使用 Jenkins 管道和 Github Multibranch 我在一个名为的功能分支上工作feature my1stfeature Jenkins 作业返回正确的分支名称 println env BRANCH NAME 回feat
  • 如何使用.clearfix类?

    我想我误解了这个概念 clearfix班级 也许有人可以帮助我 我正在寻找一种使用方法float and clear不会弄乱我的标记 所以我想 那就是那里 clearfix可以用于 在空的 H5BP 项目内部 我的标记如下所示 div di
  • DependencyProperty 值未通过数据绑定设置

    我有一堂课有一个DependencyProperty member public class SomeClass FrameworkElement public static readonly DependencyProperty Some
  • 无法使用 ijson 访问顶级元素?

    我一直在尝试用 Python 解析 JSON 文件ijson图书馆 这在查看二级元素或使用解析器时有效 但我更喜欢直接查看顶级元素的便利性 JSON 的格式基本上如下 foo a 1 b 2 bar c 3 d 4 所以 没什么特别的 我想
  • 使用 Hilt 提供 Activity 实例

    我该如何翻译这样的内容 Module abstract class BaseActivityModule a Binds abstract fun provideActivity activity A AppCompatActivity c