【问题标题】:Cannot return string from function Kotlin/Android Studio无法从函数 Kotlin/Android Studio 返回字符串
【发布时间】:2019-01-31 05:43:03
【问题描述】:

我有一个调用函数的按钮:

    btnRegistrationRegister.setOnClickListener {

        val email = etRegistrationEmail.text.toString()
        val password = etRegistrationPassword.text.toString()

        registerUser(email, password)

        Log.d(TAG,uid)

我有一个返回 uid 的函数:

    fun registerUser(email:String,password:String):String{
        FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
        var uid = "test"
        return uid
    }

问题是我仍然无法访问变量 uid,例如在下一行中

        Log.d(Tag,uid)

我意识到这是相当入门级的东西,所以我显然在这里遗漏了一个关键点。 uid 仍然是“未解决的参考错误”。

我正在尝试让 uid 用于下一个函数,而不是将我的所有函数嵌套到一个巨大的函数中。

【问题讨论】:

  • val uid = registerUser(email, password)
  • 谢谢,所以本质上,我需要在函数之外声明它作为函数的一部分?我想这是有道理的。谢谢!

标签: android function kotlin return


【解决方案1】:

registerUser 函数中有两个 email:String,password:String 参数,因此它也必须返回两个参数。

这里;

var uid = "test"
  return uid

你只是返回uid,所以将其更改为两个参数作为返回,然后就可以使用了:

val uid = registerUser(email, password)
  return uid

【讨论】:

    【解决方案2】:

    您的名为 registerUser 的函数返回一个 uid,但您没有将其存储在任何地方。为了使用 uid,您必须存储它,否则如果您不需要存储它,那么您可能不应该从方法中返回它。

    如果您需要存储它,那么只需将其存储在这样的非可变变量中:

    val uid = registerUser(email, password)
    

    如果你不想存储 uid 而只想打印日志,那么你可以使用这个:

    registerUser(email, password).also { Log.d(Tag,it) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2016-06-30
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      相关资源
      最近更新 更多