You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Hilt在Fragment中注入依赖失败:lateinit属性未初始化

解决Hilt依赖注入失败问题

核心问题分析

出现lateinit property runner is not initialized的原因是:

  1. MainFragment未被Hilt管理:Hilt需要在Android组件(如Fragment)上标注@AndroidEntryPoint才能自动完成依赖注入,你的MainFragment缺少该注解。
  2. MainActivity构造错误:Android系统会负责创建Activity实例,不能给Activity的构造函数添加@Inject constructor(),这会干扰Hilt的注入逻辑。

具体修复步骤

1. 给MainFragment添加@AndroidEntryPoint注解

修改MainFragment代码:

@AndroidEntryPoint
class MainFragment : Fragment(R.layout.main_fragment) {

    @Inject lateinit var runner: Runner

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        runner.runProcess()
    }
}

2. 修正MainActivity的构造函数

移除MainActivity的@Inject constructor(),恢复默认构造:

@AndroidEntryPoint
class MainActivity : AppCompatActivity(R.layout.activity_main) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (savedInstanceState == null) {
            supportFragmentManager.commit {
                setReorderingAllowed(true)
                add<MainFragment>(R.id.fragment_container_view)
            }
        }
    }
}

3. 确认Application类的Hilt配置

确保你的自定义Application类标注了@HiltAndroidApp(这是Hilt的全局入口):

@HiltAndroidApp
class MyApplication : Application()

同时在AndroidManifest.xml中指定该Application:

<application
    android:name=".MyApplication"
    <!-- 其他原有配置 -->
>
</application>

4. 验证依赖配置是否正确

在Module级别的build.gradle(或build.gradle.kts)中确认已添加Hilt相关依赖:

  • 顶部插件配置:
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.dagger.hilt.android'
}
  • 依赖项配置:
dependencies {
    // Hilt核心依赖
    implementation 'com.google.dagger:hilt-android:2.48'
    // Kotlin用kapt,Java替换为annotationProcessor
    kapt 'com.google.dagger:hilt-android-compiler:2.48'
}

Kotlin项目需额外开启kapt支持:

kapt {
    correctErrorTypes = true
}

额外检查

Runner类的Java代码中runProcess()方法缺少返回值类型,需补充为public void runProcess() {...},否则编译报错会间接影响注入流程。

内容的提问来源于stack exchange,提问作者speedster01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:05:11