首页 > 解决方案 > HiltViewModel 注释类中出现错误应该包含一个 @Inject 注释构造函数

问题描述

错误:如何解决这个问题,即使我没有在视图模型中进行任何注入,也会出现这个奇怪的错误

/Users/user/Documents/Personal/android-in-app-review-engine/Application/app/build/tmp/kapt3/stubs/debug/com/inappreview/code/MainActivityViewModel.java:7: error: [Hilt]
public final class MainActivityViewModel extends androidx.lifecycle.ViewModel {
             ^
  @HiltViewModel annotated class should contain exactly one @Inject annotated constructor.
  [Hilt] Processing did not complete. See error above for details.

MainActivity.kt

@AndroidEntryPoint
class MainActivity : AppCompatActivity(), InAppReviewView {

    @Inject
    lateinit var inAppReviewManager: InAppReviewManager

    private val viewModel : MainActivityViewModel by viewModels()

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        viewModel.setInAppReviewView(this)
        setOnClickListener()
    }

    private fun setOnClickListener() {
        binding.startReviewProcess.setOnClickListener {
            viewModel.startReview()
        }
    }

    override fun showReviewFlow() {
        val dialog = InAppReviewPromptDialog()
        dialog.show(supportFragmentManager, null)
    }

}

MainActivityViewModel.kt

@HiltViewModel
class MainActivityViewModel : ViewModel() {

    private lateinit var inAppReviewView: InAppReviewView

    /**
     * Sets an interface that backs up the In App Review prompts.
     * */
    fun setInAppReviewView(inAppReviewView: InAppReviewView) {
        this.inAppReviewView = inAppReviewView
    }

    /**
     * Start In App Review
     * */
    fun startReview() {
        inAppReviewView.showReviewFlow()
    }

}

应用程序.kt

@HiltAndroidApp
class App : Application()

标签: androiddagger-hilt

解决方案


由于您没有注入任何东西@HiltViewModel,因此您只需要在您想要将某些东西注入您的 ViewModel 时才需要它


推荐阅读