问题标签 [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.
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 使用范围注释,有谁知道哪个级别是合适的?
这是我的视图模型代码:
android - 接口不同实例的依赖注入
我有一个名为 Animal 的界面。它有两个实现;狗和猫。由于我想在不同的对象中注入 Animal 时指定我想要的实现,我通过执行以下操作在 Hilt 中解决了这个问题:
Dog 和 Cat 构造函数已使用 @Inject 进行注释:
如果另一个名为 C 的类需要一个 Dog 对象:
如果另一个名为 D 的类需要一个 Cat 对象:
当我运行该应用程序时,我意识到 Hilt 总是注入同一个 dog 实例,这意味着该 dog 实例在 C 类的不同实例之间共享。我需要做什么如果我想为每个类实例创建一个新的 dog 实例C?
为简洁起见,我没有为字段添加代码。
android - Hilt 集成使应用程序 MainActivity_GeneratedInjector 崩溃
尝试使用 android Api 文档集成刀柄,但应用程序因以下异常而崩溃。https://developer.android.com/training/dependency-injection/hilt-android
android - Hilt - 片段中的入口点
我正在将 Hilt 用于 DI,并且我有这门课。
此类需要注入到 fragment 中,无需标记该片段,@AdroidEntryPoint
因为该片段可以附加到未标记为的活动@AndroidEntryPoint
我怎样才能做到这一点。我尝试使用 EntryPoint,但最终出现错误。
通过将其添加到应用程序容器中来解决它。
android - 使用 OkHttpOAuthConsumer 进行 Android Hilt 和改造
我正在使用Hilt
并且我正在尝试创建和注入一个 Retrofit 客户端。
我的问题是我的一个改造客户需要一个SigningInterceptor(consumer)
我的消费者(OkHttpOAuthConsumer
)需要一个setTokenWithSecret(token, tokenSecret)
。
所以我的问题是如何Hilt
在创建我的改造客户端时传递信息(令牌和 tokenSecret)。
一些代码(可能更清楚):
我的ApiModule.kt
:
我的Repository
:
我的ViewModel
:
最后我的Fragment
:
(我对第一个改造客户端@Named(unsigned)
没有问题,所以使用 LoginApiInterface 没有问题)。
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>
android - 使用 Hilt 时出现 UninitializedPropertyAccessException
我收到lateinit
错误,但我没有看到问题
和 Module.kt
android - 在父应用程序和子应用程序上使用 @HiltAndroidApp
假设我有
当我尝试执行上述操作时,我会收到一些与 Daggererror: cannot find symbol
相关的错误。但是,当我@HiltAndroidApp
从中删除时MyParentApplication
,一切都编译得很好。显然,我不能这样做,因为 Dagger 注入在发布版本上不起作用。什么是适当的 Hilt 设置来注入派生/子类?
android - 使用“make project”构建的 Android 应用程序崩溃,但使用“Run”安装时不会崩溃
我们正在构建一个使用HighCharts
Android
包装库*的应用程序。在开发过程中,应用程序通过运行命令安装在设备/模拟器上,一切正常。
但是,在制作构建视图Make Project、Generate Signed APK或由CI/DC Pipelines生成的构建时- 应用程序总是崩溃。
Highcharts
调用时会在某处发生崩溃Gson
(需要在外部提供它作为Gradle
构建文件中的依赖项)。Gson
然后抛出java.lang.ArrayIndexOutOfBoundsException
异常。(下面的堆栈跟踪)
它不是什么:
- 与安卓版本无关。在 API 的 29、25、23 上测试
- 与设备无关。发生在运行干净android 的物理设备和模拟器上。
- 不
Proguard
相关(我认为)- 也发生在debug
构建上,并且keep
为了安全起见,还添加了激进的声明。 - 相同的图表在我们的网站和 iOS 应用程序上正常工作。
也许相关:
Highcharts Android
尚不兼容Hilt DI
,它深深嵌入在我们的代码中。显然,Highcharst
期望Context
提供给它的View
构造函数的Activity
类型是类型,Hilt
因为 in 将 a 注入FragmentContextWrapper
到Fragments
带有注释的@AndroidEntryPoint
.
描述和解决方法在这里
我想了解的是:
在Run和Make.APK
期间构建的输出可能有什么区别?
*HighCharts
是一个JS
图表库。该库Android Highcharts
是在自定义. 这也是包装代码的对象和函数。Java
JS
WebView
API
Java
JS
堆栈跟踪:
android - 安卓匕首
我有一个类 NavigationController 需要一个活动实例,我的所有片段都通过这些活动托管。
这是我的 NavigationModule
但是我收到错误,因为无法提供 MainActivity 需要 @Inject 或 @Provides 我知道 dagger 不知道如何创建 MainActivity 因为它没有构造函数我无法注入它
那么我怎样才能获得活动并将其传递给我的 NavigationController 呢?