Home > Mobile >  Type mismatched : Activity (for callback binding)
Type mismatched : Activity (for callback binding)

Time:05-10

I am trying to add firebase phone OTP verification in a fragment and I got stuck at .setActivity(...) 1

when in an activity we use "this", but in a fragment what to use?

private fun sendVerificationcode(number: String) {
    val options = PhoneAuthOptions.newBuilder(firebaseAuth)
        .setPhoneNumber(number)       // Phone number to verify
        .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
        .setActivity(this)                 // Activity (for callback binding)
        .setCallbacks(mCallBacks)          // OnVerificationStateChangedCallbacks
        .build()
    PhoneAuthProvider.verifyPhoneNumber(options)
}

I also referred to this stackoverflow solutionbut didn't help

CodePudding user response:

You can use any of one in fragment.

requireActivity() //for fragment
getActivity() as Activity // in Kotlin

CodePudding user response:

It looks like your call to getActivity() is returning an optional, which by definition can be null. The .setActivity() method does not allow null values to be passed in. Validate getActivity() doesn't return null before you proceed.

getActivity().let{ activity -> 
    val options = PhoneAuthOptions.newBuilder(firebaseAuth)
    .setPhoneNumber(number)       // Phone number to verify
    .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
    .setActivity(activity)                 // Activity (for callback binding)
    .setCallbacks(mCallBacks)          // OnVerificationStateChangedCallbacks
    .build()
    PhoneAuthProvider.verifyPhoneNumber(options)
}
  • Related