最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

android - getSerializableExtra are deprecated and compile getting Java Excepton error - Stack Overflow

programmeradmin4浏览0评论

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

发布评论

评论列表(0)

  1. 暂无评论