My targetSdkVersion 35 and compileSdkVersion is 35 and minSdk = 24.
I am working with login activity ActivityLogin.kt
where user get OTP ActivityOtpAuthentication
ActivityLogin.kt
class ActivityLogin : ActivityBase() {
lateinit var binding: ActivityLoginBinding;
Log.d("login response", "${response.body()}")
if (response.body() != null) {
val body = response.body().toString()
val jsonObject = JSONObject(body)
if (Utils.contains(jsonObject, Keys.data)) {
val responseData = jsonObject.getJSONObject(Keys.data)
Log.d("LoginResp", responseData.toString())
if (Utils.contains(jsonObject, Keys.responseMsg)) {
Utils.showToast(
this@ActivityLogin,
jsonObject.getString(Keys.responseMsg)
)
}
val loginResp: Type =
object :
TypeToken<LoginRespModal>() {}.type
var loginRespModal =
Gson().fromJson<LoginRespModal>(
responseData.toString(),
loginResp
)
if (loginRespModal.getUser()?.getIsMobileVerify() == 1) {
sessionManager.saveUserInfo(loginRespModal)
sessionManager.isUserAuthenticate = true
val intent = Intent(
this@ActivityLogin,
MainActivity::class.java
)
startActivity(intent)
finishAffinity()
} else {
val intent = Intent(
this@ActivityLogin, ActivityOtpAuthentication::class.java
)
intent.putExtra(Keys.userInfo, loginRespModal)
intent.putExtra(Keys.isFrom, Keys.login)
intent.putExtra(Keys.otpData, binding.edInput.text.toString())
startActivity(intent)
}
}
}
Getting depreciated error on below code
class ActivityOtpAuthentication : ActivityBase() {
lateinit var binding: ActivityOtpAuthenticationBinding;
lateinit var loginRespModalModal: LoginRespModal
var id = ""
var isFrom = ""
var otp: Int = 0
var email = ""
var password = ""
var otpData = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_otp_authentication)
binding.btnSubmit.setOnClickListener {var otpNumber = (binding.etOtpOne.text.toString() + binding.etOtpTwo.text.toString() +
binding.etOtpThree.text.toString() + binding.etOtpFour.text.toString() +
binding.etOtpFive.text.toString() + binding.etOtpSix.text.toString())
doVerifyOTP(otpNumber)
}
init()
}
private fun init() {
id = intent.getStringExtra(Keys.id).toString()
isFrom = intent.getStringExtra(Keys.isFrom).toString()
otp = intent.getIntExtra(Keys.otp, 0)
email = intent.getStringExtra(Keys.email).toString()
password = intent.getStringExtra(Keys.password).toString()
otpData = intent.getStringExtra(Keys.otpData)!!
if (intent.getSerializableExtra(Keys.userInfo) != null) {
loginRespModalModal = intent.getSerializableExtra(Keys.userInfo) as LoginRespModal
otp = loginRespModalModal.getUser()?.getOtp()!!
id = loginRespModalModal.getUser()!!.getId().toString()
}
initListeners()
initEditTextListener()
//setOTP(otp.toString())
startResendOTPTimer()
}
but application build successfully but after i tried to run the application after entering username and password OTP is getting generated but moving on ActivityOtpAuthentication.kt
application crash with following error
java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.ape.super/ca.ape.super.activity.ActivityOtpAuthentication}: java.lang.NullPointerException
Caused by: java.lang.NullPointerException
at ca.ape.super.activity.ActivityOtpAuthentication.init(ActivityOtpAuthentication.kt:70)
at ca.ape.super.activity.ActivityOtpAuthentication.onCreate(ActivityOtpAuthentication.kt:57)
to fix intent.getSerializableExtra
changing the code Extension Function To Get Extras From Intent Before &After Android 13 as per Medium Post
and changing the intent.getSerializableExtra
to
if (intent.getSerializableExtraProvider<LoginRespModal>(Keys.userInfo) != null) {
loginRespModalModal = intent.getSerializableExtraProvider<LoginRespModal>(Keys.userInfo) as LoginRespModal
otp = loginRespModalModal.getUser()?.getOtp()!!
id = loginRespModalModal.getUser()!!.getId().toString()
}
still getting error
java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.ape.super/ca.ape.super.activity.ActivityOtpAuthentication}: java.lang.NullPointerException
Caused by: java.lang.NullPointerException
at ca.ape.super.activity.ActivityOtpAuthentication.init(ActivityOtpAuthentication.kt:80)
at ca.ape.super.activity.ActivityOtpAuthentication.onCreate(ActivityOtpAuthentication.kt:67)
my LoginRespModal.kt
class LoginRespModal : Serializable {
@SerializedName("token")
@Expose
private var token: String = ""
@SerializedName("user")
@Expose
private var user: User? = null
fun getToken(): String {
return token
}
fun setToken(token: String) {
this.token = token
}
and Keys.kt
How to fix this application crash