问题标签 [dagger-hilt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3938 浏览

android - Android Dagger Hilt:我们需要 ViewModel 的范围注释吗?

在我的应用程序中,我有一个需要访问 ViewModel 的 MainActivity。我正在使用 DaggerHilt 和 @ViewModelInject 注释注入 ViewModel。此外,我在 Activity 中有两个 Fragment,它们需要访问同一个 ViewModel 才能使用 observables 相互传递数据。

问题:我发现每当我的一个片段通过onDestroy()它的 ViewModel 时,它就会被杀死。这让我认为 Activity 和 Fragments 没有共享同一个 ViewModel。

我的问题:有谁知道我们是否应该在 Dagger Hilt 中为 ViewModels 使用范围注释?我没有在 Hilt 文档或 android 开发教程/指南中看到这一点。我曾假设他们正在制作 ViewModels 应用级单例,这是有道理的。

如果我们必须为 ViewModels 使用范围注释,有谁知道哪个级别是合适的?

这是我的视图模型代码:

0 投票
0 回答
360 浏览

android - 接口不同实例的依赖注入

我有一个名为 Animal 的界面。它有两个实现;狗和猫。由于我想在不同的对象中注入 Animal 时指定我想要的实现,我通过执行以下操作在 Hilt 中解决了这个问题:

Dog 和 Cat 构造函数已使用 @Inject 进行注释:

如果另一个名为 C 的类需要一个 Dog 对象:

如果另一个名为 D 的类需要一个 Cat 对象:

当我运行该应用程序时,我意识到 Hilt 总是注入同一个 dog 实例,这意味着该 dog 实例在 C 类的不同实例之间共享。我需要做什么如果我想为每个类实例创建一个新的 dog 实例C?

为简洁起见,我没有为字段添加代码。

0 投票
12 回答
7093 浏览

android - Hilt 集成使应用程序 MainActivity_GeneratedInjector 崩溃

尝试使用 android Api 文档集成刀柄,但应用程序因以下异常而崩溃。https://developer.android.com/training/dependency-injection/hilt-android

0 投票
1 回答
2770 浏览

android - Hilt - 片段中的入口点

我正在将 Hilt 用于 DI,并且我有这门课。

此类需要注入到 fragment 中,无需标记该片段,@AdroidEntryPoint因为该片段可以附加到未标记为的活动@AndroidEntryPoint

我怎样才能做到这一点。我尝试使用 EntryPoint,但最终出现错误。


通过将其添加到应用程序容器中来解决它。

0 投票
0 回答
933 浏览

android - 使用 OkHttpOAuthConsumer 进行 Android Hilt 和改造

我正在使用Hilt并且我正在尝试创建和注入一个 Retrofit 客户端。

我的问题是我的一个改造客户需要一个SigningInterceptor(consumer)我的消费者(OkHttpOAuthConsumer)需要一个setTokenWithSecret(token, tokenSecret)

所以我的问题是如何Hilt在创建我的改造客户端时传递信息(令牌和 tokenSecret)。

一些代码(可能更清楚):

我的ApiModule.kt

我的Repository

我的ViewModel

最后我的Fragment

(我对第一个改造客户端@Named(unsigned)没有问题,所以使用 LoginApiInterface 没有问题)。

0 投票
1 回答
1608 浏览

android - 预期的 android Hilt

我想在我的应用程序中尝试 Hilt DI

我完成了将 Hilt 添加到我的应用程序的所有步骤,但我的问题是 hilt 在 My BaseFragment 中显示错误说:

错误:预期的 topLevelClass = BaseFragment<T, D>.class ^error: [Hilt]

BaseFragment 很简单:

对于 viewModel by viewModels() not working 显示错误

不能使用“T”作为具体类型参数。改用一个类。'Lazy' 类型没有方法 'setValue(BaseFragment<T, D>, KProperty<*>, T)',因此它不能作为 var(读写属性)的委托。**

所以我像在 Dagger 中使用的那样使用 Factory,它可以工作,但仍然是我的问题

基本片段

感谢您帮助我并提前感谢

编辑:在 github 上打开 这个问题,他们说这是一个错误,他们将禁止 @AndroidEntryPoint 用于具有类型参数的基类 –</p>

0 投票
1 回答
922 浏览

android - 使用 Hilt 时出现 UninitializedPropertyAccessException

我收到lateinit错误,但我没有看到问题

和 Module.kt

0 投票
1 回答
571 浏览

android - 在父应用程序和子应用程序上使用 @HiltAndroidApp

假设我有

当我尝试执行上述操作时,我会收到一些与 Daggererror: cannot find symbol相关的错误。但是,当我@HiltAndroidApp从中删除时MyParentApplication,一切都编译得很好。显然,我不能这样做,因为 Dagger 注入在发布版本上不起作用。什么是适当的 Hilt 设置来注入派生/子类?

0 投票
0 回答
135 浏览

android - 使用“make project”构建的 Android 应用程序崩溃,但使用“Run”安装时不会崩溃

我们正在构建一个使用HighCharts Android包装库*的应用程序。在开发过程中,应用程序通过运行命令安装在设备/模拟器上,一切正常。

但是,在制作构建视图Make ProjectGenerate Signed APK或由CI/DC Pipelines生成的构建时- 应用程序总是崩溃。

Highcharts调用时会在某处发生崩溃Gson(需要在外部提供它作为Gradle构建文件中的依赖项)。Gson然后抛出java.lang.ArrayIndexOutOfBoundsException异常。(下面的堆栈跟踪)

它不是什么:

  1. 与安卓版本无关。在 API 的 29、25、23 上测试
  2. 与设备无关。发生在运行干净android 的物理设备和模拟器上。
  3. Proguard相关(我认为)- 也发生在debug构建上,并且keep为了安全起见,还添加了激进的声明。
  4. 相同的图表在我们的网站和 iOS 应用程序上正常工作。

也许相关:

Highcharts Android尚不兼容Hilt DI,它深深嵌入在我们的代码中。显然,Highcharst期望Context提供给它的View构造函数的Activity类型是类型,Hilt因为 in 将 a 注入FragmentContextWrapperFragments带有注释的@AndroidEntryPoint. 描述和解决方法在这里

我想了解的是:

在RunMake.APK期间构建的输出可能有什么区别?

可以在此处找到有关崩溃的完整描述以及示例代码


*HighCharts是一个JS图表库。该库Android Highcharts是在自定义. 这也是包装代码的对象和函数。JavaJSWebViewAPIJavaJS

堆栈跟踪:

0 投票
1 回答
586 浏览

android - 安卓匕首

我有一个类 NavigationController 需要一个活动实例,我的所有片段都通过这些活动托管。

这是我的 NavigationModule

但是我收到错误,因为无法提供 MainActivity 需要 @Inject 或 @Provides 我知道 dagger 不知道如何创建 MainActivity 因为它没有构造函数我无法注入它

那么我怎样才能获得活动并将其传递给我的 NavigationController 呢?