Hilt - Java 相当于 kotlin 的“by viewmodels()”将 viewmodel 注入到 Activity 中的方法是什么?

DIR*_*AVE 7 android kotlin dagger-hilt

我正在按照 Kotlin 教程学习 Dagger Hilt 进行依赖注入。教程使用

class MainActivity: AppCompatActivity() {
    private val viewModel: TestViewModel by viewModels()
}
Run Code Online (Sandbox Code Playgroud)

在 MainActivity 中注入视图模型。

它需要依赖:implementation "androidx.activity.activity-ktx:1.1.0"才能这样做。

我正在尝试学习 Java 中的 hilt,所以我不确定将视图模型注入到我的活动中的 Java 等效项是什么。

这是不正确的并且不起作用

@Inject
private TestViewModel testViewModel;
Run Code Online (Sandbox Code Playgroud)

并使用

testViewModel = new ViewModelProvider(this).get(TestViewModel.class);

看起来不像依赖注入。

Java中的相当于什么by viewModels()

ian*_*ake 7

testViewModel = new ViewModelProvider(this).get(TestViewModel.class)确实正是by viewModels()适合您的。

您会注意到, 和by viewModels()new ViewModelProvder(this)没有传入自定义ViewModelProvider.Factory实例 - 这是因为它们使用默认工厂 - Hilt 设置的一个通过 DI 正确创建 ViewModel 的工厂。