Не могу отправить смс через firebase телефон аутентификации - PullRequest
0 голосов
/ 05 апреля 2020

Я новичок в Kotlin. Пытаюсь отправить смс через firebase на телефон, но я получаю

FATAL EXCEPTION: main

kotlin .UninitializedPropertyAccessException: обратные вызовы свойства lateinit не были инициализированы

вот мой код

class LoginActivity : AppCompatActivity() {

    private lateinit var callbacks: PhoneAuthProvider.OnVerificationStateChangedCallbacks

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.login);

        val phoneNumber = findViewById<EditText>(R.id.phoneNumber)
        val loginButton = findViewById<Button>(R.id.loginButton)
        loginButton.setOnClickListener {

            PhoneAuthProvider.getInstance().verifyPhoneNumber(
                phoneNumber.text.toString().drop(1), // Phone number to verify
                60, // Timeout duration
                TimeUnit.SECONDS, // Unit of timeout
                this, // Activity (for callback binding)
                callbacks) // OnVerificationStateChangedCallback

            callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
                override fun onVerificationCompleted(p0: PhoneAuthCredential) {
                    //
                }

                override fun onVerificationFailed(p0: FirebaseException) {
                    //
                }


            }

        }

    }
}

1 Ответ

0 голосов
/ 05 апреля 2020

В отличие от val, члены lateinit var не требуют инициализации их при создании экземпляра класса. Но вы получите эту ошибку, если попытаетесь использовать их до того, как они будут назначены.

Ваш код передает callback в качестве параметра verifyPhoneNumber() до его ', определенного в строке ниже. Измените порядок кода, чтобы сначала назначить его, а затем используйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...