Ответ Уильяма близок, но не совсем точен на 100%.
createUserWithEmailAndPassword () возвращает задание. Task.getResult () на самом деле аннотируется как возвращение @Nullable
в Java следующим образом:
@Nullable
public abstract TResult getResult();
На мгновение игнорируя, имеет ли смысл в действительности определять его следующим образом,Это определение говорит Kotlin, что возвращаемое значение getResult()
должно быть проверено на нулевое значение, прежде чем его можно будет безопасно использовать. Поэтому вам нужно как-то тщательно проверять результат перед вызовом его методов. Вот один способ, который явно проверяет:
val result = it.result // Kotlin says result is of type "AuthResult?"
if (result != null) {
val user = result.user // Kotlin says user is of type "FirebaseUser?"
if (user != null) {
Log.d("Main", "Successfully created user with uid: ${user.uid}")
}
}
Не обязательно также проверять result.getUser()
на ноль, так как он также определен @Nullable
. Обязательно проверьте в своей среде IDE типы и определения вещей, чтобы вы могли лучше понять их гарантии обнуляемости.