Невозможно вернуть строку из функции Kotlin / Android Studio - PullRequest
0 голосов
/ 24 августа 2018

У меня есть кнопка, которая вызывает функцию:

    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 для следующей функции, не вкладывая все мои функции в одну гигантскую функцию.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Ваша функция с именем registerUser возвращает идентификатор, но вы его нигде не храните.Чтобы использовать uid, вы должны сохранить его, иначе, если вам не нужно его хранить, вы, вероятно, не должны возвращать его из метода.

Если вам нужно сохранить его, просто сохраните его в неизменяемой переменной, например:

val uid = registerUser(email, password)

Если вы не хотите хранить uid и просто хотите распечатать журнал, тогдаВы можете использовать это:

registerUser(email, password).also { Log.d(Tag,it) }
0 голосов
/ 24 августа 2018

У вас есть два email:String,password:String параметра в вашей функции registerUser, поэтому она также должна возвращать два параметра.

Здесь;

var uid = "test"
  return uid

Вы только что вернули uid, поэтому измените его на два параметра в качестве возврата, тогда его можно будет использовать:

val uid = registerUser(email, password)
  return uid
...