【问题标题】:Provides methods must return a value (not void)提供方法必须返回一个值(非 void)
【发布时间】:2020-08-21 22:11:24
【问题描述】:

当我尝试使用 Dagger 2 时出现此错误,我该怎么办,我在 Dagger 2 new 中

e: /Users/stepanbezhuk/Documents/Work/Rebus/Movie/app/build/tmp/kapt3/stubs/debug/com/popularmovies/movies/Service/MessageWorking.java:11: error: @Provides methods must return a value (not void)
    public final void messageConnected$app_debug(boolean networkStatus) {
 

模块 1

 @Module
 open class MessageWorking @Inject constructor(private val context: Context) {

 @Provides
 internal fun messageConnected(networkStatus: Boolean) {
      if (networkStatus) {
          showMessage(message = "Connect")
      } else {
          showMessage(message = "Disconnect")
      }
  }

  private fun showMessage(message: String) {
      return Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
  }
}

界面

@Component(modules = arrayOf(MessageWorking::class))

@Singleton
interface DaggerComponent {
    fun messageConnected(networkStatus: Boolean)
}

【问题讨论】:

  • 你想做什么?我想你不知道 Dagger2 的概念以及我们为什么使用 Dagger2。 Dagger2 使用提供者来创建所需对象的实例。所以它必须返回一个值

标签: java android kotlin dagger-2


【解决方案1】:

@Provides 注释意味着您必须返回一些东西。 messageConnected() 中没有返回类型。

你在 Dagger (toast) 中做 UI 的东西,这很奇怪,因为 dagger 的职责是提供依赖。

这里是 Dagger 的简单介绍以及如何设置的链接: https://medium.com/@skshayne/understanding-dagger-as-a-beginner-8ffe29bad429

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2019-06-13
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多