我是科特林的新朋友。尝试通过Firebase电话身份验证发送短信,但是我得到了
致命异常:主要
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) {
//
}
}
}
}
}
答案 0 :(得分:0)
与val
不同,lateinit var
成员不需要您在实例化类时对其进行初始化。但是,如果在分配它们之前尝试使用它们,则会出现该错误。
您的代码将callback
作为参数传递给verifyPhoneNumber()
,然后在下面的行中对其进行定义。重新排序代码以首先分配它,然后再使用它。