Hilt:未生成继承的片段类

问题描述 投票:0回答:2

我有以下继承链:

邮政编码片段:

class ZipCodeFragment : BaseUserOnboardingFragment(R.layout.user_onboarding_zip_code_fragment) { 
    // code
}

BaseUserOnboardingFragment:

abstract class BaseUserOnboardingFragment(@LayoutRes layoutRes: Int = 0) : BaseFragment(layoutRes) { 
    // code
}

基础片段

abstract class BaseFragment : Fragment, ErrorListener { 

    constructor() : super()
    constructor(@LayoutRes layoutRes: Int) : super(layoutRes)
}

按照此处描述的步骤,我已将我的

ZipCodeFragment
注释如下:

@AndroidEntryPoint(BaseUserOnboardingFragment::class)
class ZipCodeFragment : Hilt_ZipCodeFragment(R.layout.user_onboarding_zip_code_fragment) { 
    // code
}

编译时,出现以下错误,好像 Hilt 类未正确生成:

error: [Hilt]
public final class ZipCodeFragment {
             ^
  @AndroidEntryPoint class expected to extend Hilt_ZipCodeFragment. Found: Object
  [Hilt] Processing did not complete. See error above for details.

我错过了什么?

android dagger-hilt
2个回答
0
投票

我发现了问题:

abstract class BaseUserOnboardingFragment(@LayoutRes layoutRes: Int = 0)
有一个尚不支持的默认构造函数参数。


0
投票

在 Hilt Gradle 插件支持此功能之前,您可以使用

EntryPoint
来注入片段

class ZipCodeFragment : BaseUserOnboardingFragment(R.layout.user_onboarding_zip_code_fragment) { 

   override fun onAttach(context: Context) {
      super.onAttach(context)
      EntryPointAccessors.fromActivity(
          activity = context.findActivity() as Activity,
          entryPoint = ZipCodeFragmentEntryPoint::class.java,
      ).inject(this)
    }

    @EntryPoint
    @InstallIn(ActivityComponent::class)
    internal interface ZipCodeFragmentEntryPoint {
        fun inject(zipCodeFragment: ZipCodeFragment)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.