0
Fatal Exception: java.lang.RuntimeException: Unable to pause activity {org.altruist.BajajExperia/com.altruist.healthcard.activities.HealthCardActivity}: java.lang.NullPointerException: Attempt to read from field 'boolean je.w' on a null object reference
       at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:4736)
       at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4687)
       at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4639)
       at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:237)
       at android.app.ActivityThread.main(ActivityThread.java:7814)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)

Activity Code

package com.altruist.healthcard.activities

import android.app.Activity
import android.content.Intent
import android.content.IntentFilter
import android.graphics.Color
import android.graphics.Typeface
import android.net.Uri
import android.os.Bundle
import android.text.Spannable
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.res.ResourcesCompat
import androidx.core.widget.NestedScrollView
import androidx.fragment.app.FragmentManager
import com.altruist.healthcard.R
import com.altruist.healthcard.analytics.AnalyticsEvents
import com.altruist.healthcard.config.Constants
import com.altruist.healthcard.config.Constants.cardLimit
import com.altruist.healthcard.config.Constants.cardNo
import com.altruist.healthcard.config.Constants.cityName
import com.altruist.healthcard.config.Constants.dob
import com.altruist.healthcard.config.Constants.email
import com.altruist.healthcard.config.Constants.firstName
import com.altruist.healthcard.config.Constants.gender
import com.altruist.healthcard.config.Constants.keyPaymentId
import com.altruist.healthcard.config.Constants.languageJSON
import com.altruist.healthcard.config.Constants.lastName
import com.altruist.healthcard.config.Constants.mobile
import com.altruist.healthcard.config.Constants.name
import com.altruist.healthcard.config.Constants.state
import com.altruist.healthcard.fragments.OTPReadBottomSheetFragment
import com.altruist.healthcard.models.GetOtpDTO
import com.altruist.healthcard.models.SendRequestDTO
import com.altruist.healthcard.network.APIClient
import com.altruist.healthcard.network.APIInterface
import com.altruist.healthcard.preferences.PreferenceHelper
import com.altruist.healthcard.progressdialog.FullScreenProgressBar
import com.altruist.healthcard.receivers.NetworkChangeReceiver
import com.altruist.healthcard.utility.CommonUtils
import com.altruist.healthcard.utility.CommonUtils.showIndefiniteSnackBar
import com.altruist.healthcard.utility.CommonUtils.showSnackBar
import com.google.android.material.bottomsheet.BottomSheetBehavior
import kotlinx.android.synthetic.main.content_health_card.*
import kotlinx.android.synthetic.main.layout_bottom_sheet_price_break_up.*
import org.json.JSONObject
import retrofit2.Call
import retrofit2.Response
import java.io.UnsupportedEncodingException


class HealthCardActivity : AppCompatActivity(), View.OnClickListener {
    lateinit var toolbar: Toolbar
    var sheetBehavior: BottomSheetBehavior<CoordinatorLayout>? = null
    var tvTitle: TextView? = null
    var offerType: String? = null
    lateinit var boldFont: Typeface
    lateinit var regularFont: Typeface
    var paymentId: String? = null
    lateinit var networkChangeReceiver: NetworkChangeReceiver
    private var firstLaunch: Boolean = false
    lateinit var obj: JSONObject
    lateinit var TXT_VALID_TILL: String
    lateinit var TXT_CARD_LIMIT: String
    lateinit var TXT_GET_IT_NOW: String
    lateinit var TXT_TNC_LABEL: String
    lateinit var TXT_FEE_BREAKDOWN: String
    lateinit var TXT_PREMIUM: String
    lateinit var TXT_INTEGRATED_GST: String
    lateinit var TXT_TOTAL_PREM_FEE: String
    lateinit var TXT_APPROVED_LIMIT: String
    lateinit var TXT_HEALTH_EMI_CARD: String
    lateinit var TXT_SINGLE_SOLUTION: String
    lateinit var TXT_ACCIDENTAL_COVER_LABEL: String
    lateinit var TXT_FREE: String
    lateinit var TXT_POWERFUL_NETWORK: String
    lateinit var TXT_HEALTH_USE_ACCROSS: String
    lateinit var TXT_FLEXIBLE_TENURE: String
    lateinit var TXT_HEALTH_TENURE_PAY: String
    lateinit var TXT_NO_DOCS: String
    lateinit var TXT_EASY_ACCESS: String
    lateinit var TXT_ONE_TIME_SUB: String
    lateinit var TXT_GET_EASY_ACCESS: String
    lateinit var TXT_TOP_PARTNERS: String
    lateinit var TXT_FAQS: String

    lateinit var TXT_WHAT_IS_HEALTH_CARD: String
    lateinit var TXT_WHAT_HEALTH_DESC: String
    lateinit var TXT_WHERE_USE_HEALTH_CARD: String
    lateinit var TXT_WHERE_USE_HEALTH_CARD_DESC: String
    lateinit var TXT_WHAT_TREATMENTS: String
    lateinit var TXT_WHAT_TREATMENTS_DESC: String
    lateinit var TXT_CARD_HOW_MUCH: String
    lateinit var TXT_CARD_HOW_MUCH_DESC: String
    lateinit var TXT_WHAT_LOAN_AMT: String
    lateinit var TXT_WHAT_LOAN_AMT_DESC: String
    lateinit var MEMBERSINCE: String


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

        if (intent.hasExtra("customerId")) {
            Constants.customerID = intent.getStringExtra("customerId")!!
        }
        if (intent.hasExtra("name")) {
            name = intent.getStringExtra("name")!!
            tv_card_holder_name.text = name
        }
        if (intent.hasExtra("dob")) {
            dob = intent.getStringExtra("dob")!!
        }
        if (intent.hasExtra("email")) {
            email = intent.getStringExtra("email")!!
        }
        if (intent.hasExtra("mobileno")) {
            mobile = intent.getStringExtra("mobileno")!!
        }
        if (intent.hasExtra("session")) {
            Constants.userSession = intent.getStringExtra("session")!!
        }
        if (intent.hasExtra("cardLimit")) {
            cardLimit = intent.getStringExtra("cardLimit").toString()
        }
        if (intent.hasExtra("cardNo")) {
            cardNo = intent.getStringExtra("cardNo").toString()
        }
        if (intent.hasExtra("appLanguage")) {
            languageJSON = intent.getStringExtra("appLanguage").toString()
        }

        if (intent.hasExtra("state")) {
            state = intent.getStringExtra("state").toString()
        }
        if (intent.hasExtra("lastName")) {
            lastName = intent.getStringExtra("lastName").toString()
        }
        if (intent.hasExtra("firstName")) {
            firstName = intent.getStringExtra("firstName").toString()
        }
        if (intent.hasExtra("gender")) {
            gender = intent.getStringExtra("gender").toString()
        }
        if (intent.hasExtra("cityName")) {
            cityName = intent.getStringExtra("cityName").toString()
        }
        if (intent.hasExtra("offerType")) {
            offerType = intent.getStringExtra("offerType")
        }
        setLanguageLabels()
        setupToolbar()

        tv_label_valid_till.text = TXT_VALID_TILL
        tv_label_approved_limit.text = TXT_CARD_LIMIT
        tv_get_it_noe.text = TXT_GET_IT_NOW
        tv_get_it_now.text = TXT_GET_IT_NOW
        tv_terms_and_conditions_start.text = TXT_TNC_LABEL
        tv_terms_and_conditions_price_break_up.text = TXT_TNC_LABEL
        tv_label_fee_breakdown.text = TXT_FEE_BREAKDOWN
        tv_label_premium.text = TXT_PREMIUM
        tv_label_int_gst.text = TXT_INTEGRATED_GST
        tv_label_total_fee.text = TXT_TOTAL_PREM_FEE
        tv_preapproved_limit_label.text = TXT_APPROVED_LIMIT
        tv_title.text = TXT_HEALTH_EMI_CARD
        tv_sub_title.text = TXT_SINGLE_SOLUTION
        tv_one_lakh_cover.text = TXT_ACCIDENTAL_COVER_LABEL
        tv_free.text = TXT_FREE
        tv_powerful_nw.text = TXT_POWERFUL_NETWORK
        tv_powerful_nw_desc.text = TXT_HEALTH_USE_ACCROSS
        tv_flexi_tenure.text = TXT_FLEXIBLE_TENURE
        tv_tenure_desc.text = TXT_HEALTH_TENURE_PAY
        tv_no_docs.text = TXT_NO_DOCS
        tv_easy_access.text = TXT_EASY_ACCESS
        tv_onw_time_sub.text = TXT_ONE_TIME_SUB
        tv_get_easy_access.text = TXT_GET_EASY_ACCESS
        tv_title_partners.text = TXT_TOP_PARTNERS
        tv_title_faq.text = TXT_FAQS
        tv_question_1.text = TXT_WHAT_IS_HEALTH_CARD
        tv_answer_1.text = TXT_WHAT_HEALTH_DESC
        tv_question_2.text = TXT_WHERE_USE_HEALTH_CARD
        tv_answer_2.text = TXT_WHERE_USE_HEALTH_CARD_DESC
        tv_question_3.text = TXT_WHAT_TREATMENTS
        tv_answer_3.text = TXT_WHAT_TREATMENTS_DESC
        tv_question_4.text = TXT_CARD_HOW_MUCH
        tv_answer_4.text = TXT_CARD_HOW_MUCH_DESC
        tv_question_5.text = TXT_WHAT_LOAN_AMT
        tv_answer_5.text = TXT_WHAT_LOAN_AMT_DESC
        tv_label_member_since.text = MEMBERSINCE

        sheetBehavior = BottomSheetBehavior.from(co_price_break_up)

        paymentId = PreferenceHelper.getStringPreference(this, keyPaymentId)
        iv_info.setOnClickListener {
            if (sheetBehavior!!.state != BottomSheetBehavior.STATE_EXPANDED) {
                sheetBehavior!!.setState(BottomSheetBehavior.STATE_EXPANDED)
            } else {
                sheetBehavior!!.setState(BottomSheetBehavior.STATE_COLLAPSED)
            }
        }

        iv_close.setOnClickListener {
            sheetBehavior!!.state = BottomSheetBehavior.STATE_HIDDEN
        }
        if (cardLimit.isNotEmpty())
            tv_approved_limit_rs.text = "₹ ${cardLimit?.let { CommonUtils.formatAmt(it) }}"
        if (offerType.equals("RA", ignoreCase = true)) {
            ll_bottom_tandc.visibility = View.GONE
            cl_health_card_pay_now.visibility = View.GONE
            cl_approved_card_limit.visibility = View.GONE
//            cl_health_card_apply_now.visibility = View.VISIBLE
            ll_card_limit.visibility = View.VISIBLE
            v_line.visibility = View.VISIBLE
            val layoutParams = LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT
            )
            layoutParams.setMargins(0, 0, 0, 0)
            ll_benefit_one.layoutParams = layoutParams
        }

        btn_apply_now.setOnClickListener(this)
        ll_question_1.setOnClickListener(this)
        ll_question_2.setOnClickListener(this)
        ll_question_3.setOnClickListener(this)
        ll_question_4.setOnClickListener(this)
        ll_question_5.setOnClickListener(this)
        ll_btn_get_it_now.setOnClickListener(this)
        ll_btn_get_it_now_bottomsheet.setOnClickListener(this)
        boldFont = ResourcesCompat.getFont(this, R.font.notosansbold)!!
        regularFont = ResourcesCompat.getFont(this, R.font.notosansregular)!!
        tv_terms_and_conditions_start.movementMethod = LinkMovementMethod.getInstance()
        tv_terms_and_conditions_start.setText(
            tv_terms_and_conditions_start.text,
            TextView.BufferType.SPANNABLE
        )
        val mySpannable = tv_terms_and_conditions_start.text as Spannable
        val myClickableSpan: ClickableSpan = object : ClickableSpan() {
            override fun onClick(widget: View) {
                if (CommonUtils.isConnectingToInternet(this@HealthCardActivity)) {
                    try {
                        val browserIntent = Intent(
                            Intent.ACTION_VIEW,
                            Uri.parse("https://www.bajajfinserv.in/Health_card_tandC_PDF_Asset_Health-Card-TC-Revised-26-02-2020.pdf")
                        )
                        startActivity(browserIntent)
                    } catch (e: UnsupportedEncodingException) {
                        e.printStackTrace()
                    }
                } else {
                    showSnackBar(
                        window.decorView.rootView,
                        "No Internet access!"
                    )
                }
            }
        }
        mySpannable.setSpan(myClickableSpan, 32, 35, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
        tv_terms_and_conditions_start.highlightColor = Color.TRANSPARENT
        tv_terms_and_conditions_price_break_up.movementMethod = LinkMovementMethod.getInstance()
        tv_terms_and_conditions_price_break_up.setText(
            tv_terms_and_conditions_price_break_up.text,
            TextView.BufferType.SPANNABLE
        )
        val mySpannableBottomSheet = tv_terms_and_conditions_price_break_up.text as Spannable
        val myClickableSpanBottomSheet: ClickableSpan = object : ClickableSpan() {
            override fun onClick(widget: View) {
                try {
                    if (CommonUtils.isConnectingToInternet(this@HealthCardActivity)) {
                        val browserIntent = Intent(
                            Intent.ACTION_VIEW,
                            Uri.parse("https://www.bajajfinserv.in/Health_card_tandC_PDF_Asset_Health-Card-TC-Revised-26-02-2020.pdf")
                        )
                        startActivity(browserIntent)
                    } else {
                        showSnackBar(
                            window.decorView.rootView,
                            "No Internet access!"
                        )
                    }
                } catch (e: UnsupportedEncodingException) {
                    e.printStackTrace()
                }
            }
        }
        mySpannableBottomSheet.setSpan(
            myClickableSpanBottomSheet,
            32,
            35,
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
        )
        tv_terms_and_conditions_price_break_up.highlightColor = Color.TRANSPARENT

        networkChangeReceiver = object : NetworkChangeReceiver() {
            override fun onNetworkChange(isOnline: Boolean) {
                if (!isOnline) {
                    showIndefiniteSnackBar(
                        window.decorView.rootView,
                        getString(R.string.message_no_internet)
                    )
                } else {
                    if (!firstLaunch) {
                        showSnackBar(
                            window.decorView.rootView,
                            getString(R.string.message_online)
                        )
                    } else {
                        firstLaunch = false
                    }
                }
            }
        }
        sv_parent.setOnScrollChangeListener { v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int ->
            if (scrollY > 200) {
                if (tvTitle?.visibility == View.GONE)
                    tvTitle?.visibility = View.VISIBLE
            } else {
                if (tvTitle?.visibility == View.VISIBLE)
                    tvTitle?.visibility = View.GONE
            }
        }
    }

    fun setupToolbar() {
        try {
            toolbar = findViewById(R.id.toolbar)
            setSupportActionBar(toolbar)
            val ivBack = findViewById<ImageView>(R.id.iv_back)
            tvTitle = findViewById(R.id.tv_toolbar_title)
            tvTitle!!.text = TXT_HEALTH_EMI_CARD
            ivBack.setOnClickListener {
                finish()
            }
            supportActionBar?.elevation = 0f
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.ll_question_1 -> {
                if (iv_faq_1.tag.toString().equals("closed", ignoreCase = true)) {
                    tv_question_1.typeface = boldFont
                    iv_faq_1.tag = "open"
                    tv_answer_1.visibility = View.VISIBLE
                    iv_faq_1.animate().rotation(180F).start()
                } else {
                    tv_question_1.typeface = regularFont
                    iv_faq_1.tag = "closed"
                    tv_answer_1.visibility = View.GONE
                    iv_faq_1.animate().rotation(0F).start()
                }
            }
            R.id.ll_question_2 -> {
                if (iv_faq_2.tag.toString().equals("closed", ignoreCase = true)) {
                    tv_question_2.typeface = boldFont
                    iv_faq_2.tag = "open"
                    tv_answer_2.visibility = View.VISIBLE
                    iv_faq_2.animate().rotation(180F).start()
                } else {
                    tv_question_2.typeface = regularFont
                    iv_faq_2.tag = "closed"
                    tv_answer_2.visibility = View.GONE
                    iv_faq_2.animate().rotation(0F).start()
                }
            }
            R.id.ll_question_3 -> {
                if (iv_faq_3.tag.toString().equals("closed", ignoreCase = true)) {
                    tv_question_3.typeface = boldFont
                    iv_faq_3.tag = "open"
                    tv_answer_3.visibility = View.VISIBLE
                    iv_faq_3.animate().rotation(180F).start()
                } else {
                    tv_question_3.typeface = regularFont
                    iv_faq_3.tag = "closed"
                    tv_answer_3.visibility = View.GONE
                    iv_faq_3.animate().rotation(0F).start()
                }
            }
            R.id.ll_question_4 -> {
                if (iv_faq_4.tag.toString().equals("closed", ignoreCase = true)) {
                    tv_question_4.typeface = boldFont
                    iv_faq_4.tag = "open"
                    tv_answer_4.visibility = View.VISIBLE
                    iv_faq_4.animate().rotation(180F).start()
                } else {
                    tv_question_4.typeface = regularFont
                    iv_faq_4.tag = "closed"
                    tv_answer_4.visibility = View.GONE
                    iv_faq_4.animate().rotation(0F).start()
                }
            }
            R.id.ll_question_5 -> {
                if (iv_faq_5.tag.toString().equals("closed", ignoreCase = true)) {
                    tv_question_5.typeface = boldFont
                    iv_faq_5.tag = "open"
                    tv_answer_5.visibility = View.VISIBLE
                    iv_faq_5.animate().rotation(180F).start()
                } else {
                    tv_question_5.typeface = regularFont
                    iv_faq_5.tag = "closed"
                    tv_answer_5.visibility = View.GONE
                    iv_faq_5.animate().rotation(0F).start()
                }
            }
            R.id.ll_btn_get_it_now -> {
                if (CommonUtils.isConnectingToInternet(this)) {
                    callOtp(this)
                } else {
                    showSnackBar(
                        window.decorView.rootView,
                        "No Internet access!"
                    )
                }
            }
            R.id.ll_btn_get_it_now_bottomsheet -> {
//                if (paymentId == null || !CommonUtils.checkPaymentStatus(window.decorView.rootView,this))
                if (CommonUtils.isConnectingToInternet(this)) {
                    callOtp(this)
                } else {
                    showSnackBar(
                        window.decorView.rootView,
                        "No Internet access!"
                    )
                }
            }
            R.id.btn_apply_now -> {
//                if (paymentId == null || !CommonUtils.checkPaymentStatus(window.decorView.rootView,this))
                startActivity(Intent(this, AppliedSuccessfulActivity::class.java))
                finish()
            }
        }
    }

    private fun showOTPReadFragment() {
        val bottomSheetFragment = OTPReadBottomSheetFragment()
        val fragmentManager: FragmentManager = supportFragmentManager
        bottomSheetFragment.isCancelable = false
        bottomSheetFragment.show(fragmentManager, bottomSheetFragment.tag)
    }

    override fun onStart() {
        super.onStart()
        val intentFilter = IntentFilter(Constants.CONNECTIVITY_CHANGE)
        this.registerReceiver(networkChangeReceiver, intentFilter)
        firstLaunch = true
    }

    override fun onStop() {
        super.onStop()
        this.unregisterReceiver(networkChangeReceiver)
    }

    private fun setLanguageLabels() {
        obj = JSONObject(languageJSON)
        TXT_VALID_TILL = obj.getString("TXT_VALID_TILL")
        TXT_CARD_LIMIT = obj.getString("TXT_CARD_LIMIT")
        TXT_GET_IT_NOW = obj.getString("TXT_GET_IT_NOW")
        TXT_TNC_LABEL = obj.getString("TXT_TNC_LABEL")
        TXT_FEE_BREAKDOWN = obj.getString("TXT_FEE_BREAKDOWN")
        TXT_PREMIUM = obj.getString("TXT_PREMIUM")
        TXT_INTEGRATED_GST = obj.getString("TXT_INTEGRATED_GST")
        TXT_TOTAL_PREM_FEE = obj.getString("TXT_TOTAL_PREM_FEE")
        TXT_APPROVED_LIMIT = obj.getString("TXT_APPROVED_LIMIT")
        TXT_HEALTH_EMI_CARD = obj.getString("TXT_HEALTH_EMI_CARD")
        TXT_SINGLE_SOLUTION = obj.getString("TXT_SINGLE_SOLUTION")
        TXT_ACCIDENTAL_COVER_LABEL = obj.getString("TXT_ACCIDENTAL_COVER_LABEL")
        TXT_FREE = obj.getString("TXT_FREE")
        TXT_POWERFUL_NETWORK = obj.getString("TXT_POWERFUL_NETWORK")
        TXT_HEALTH_USE_ACCROSS = obj.getString("TXT_HEALTH_USE_ACCROSS")
        TXT_FLEXIBLE_TENURE = obj.getString("TXT_FLEXIBLE_TENURE")
        TXT_HEALTH_TENURE_PAY = obj.getString("TXT_HEALTH_TENURE_PAY")
        TXT_NO_DOCS = obj.getString("TXT_NO_DOCS")
        TXT_EASY_ACCESS = obj.getString("TXT_EASY_ACCESS")
        TXT_ONE_TIME_SUB = obj.getString("TXT_ONE_TIME_SUB")
        TXT_GET_EASY_ACCESS = obj.getString("TXT_GET_EASY_ACCESS")
        TXT_TOP_PARTNERS = obj.getString("TXT_TOP_PARTNERS")
        TXT_FAQS = obj.getString("TXT_FAQS")
        TXT_WHAT_IS_HEALTH_CARD = obj.getString("TXT_WHAT_IS_HEALTH_CARD")
        TXT_WHAT_HEALTH_DESC = obj.getString("TXT_WHAT_HEALTH_DESC")
        TXT_WHERE_USE_HEALTH_CARD = obj.getString("TXT_WHERE_USE_HEALTH_CARD")
        TXT_WHERE_USE_HEALTH_CARD_DESC = obj.getString("TXT_WHERE_USE_HEALTH_CARD_DESC")
        TXT_WHAT_TREATMENTS = obj.getString("TXT_WHAT_TREATMENTS")
        TXT_WHAT_TREATMENTS_DESC = obj.getString("TXT_WHAT_TREATMENTS_DESC")
        TXT_CARD_HOW_MUCH = obj.getString("TXT_CARD_HOW_MUCH")
        TXT_CARD_HOW_MUCH_DESC = obj.getString("TXT_CARD_HOW_MUCH_DESC")
        TXT_WHAT_LOAN_AMT = obj.getString("TXT_WHAT_LOAN_AMT")
        TXT_WHAT_LOAN_AMT_DESC = obj.getString("TXT_WHAT_LOAN_AMT_DESC")
        MEMBERSINCE = obj.getString("MEMBERSINCE")
    }

}

This is the Activity code. Something boolean field is there but I am not able to identify that. Maybe something in progaurd obfuscates the code. can anyone help me with this? Not even using a handler in this activity then also this crash occurring randomly on production. Does mapping will have the mapping for je.w field.

hata
  • 8,429
  • 5
  • 32
  • 57
lalit jadhav
  • 300
  • 1
  • 3
  • 12

1 Answers1

1

There are many points in your code that could possibly lead to a NullPointerException

  1. Your lateinit var declarations

I suggest you to substitute them either with optional values declaration like

var TXT_VALID_TILL: String? = null

or to assign them a default value

var TXT_VALID_TILL = ""
  1. You are forcing the cast from the getStringExtra methods

I suggest you to substitute them by providing an optional value instead

name = intent.getStringExtra("name") ?: ""
  1. You are forcing the cast of the optional variable sheetBehavior and tvTitle

I suggest you to change your code like this

if (sheetBehavior?.state != BottomSheetBehavior.STATE_EXPANDED) {
    sheetBehavior?.setState(BottomSheetBehavior.STATE_EXPANDED)
} else {
    sheetBehavior?.setState(BottomSheetBehavior.STATE_COLLAPSED)
}

...

fun setupToolbar() {
        try {
            ...
            tvTitle = findViewById(R.id.tv_toolbar_title)
            tvTitle?.text = TXT_HEALTH_EMI_CARD
            ...
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

  1. You are not adding a default value to the when condition in the onClick method, change your code to:
override fun onClick(v: View?) {
    when (v?.id ?: -1) {
        ...
        else -> { } // <-- Add also the else condition
    }
}
  1. You are registering and unregistering an optional receiver, add a null check before doing it:
    override fun onStart() {
        super.onStart()

        if (networkChangeReceiver != null) {
            val intentFilter = IntentFilter(Constants.CONNECTIVITY_CHANGE)
            this.registerReceiver(networkChangeReceiver, intentFilter)
            firstLaunch = true
        }
    }

    override fun onStop() {
        super.onStop()
        
        if (networkChangeReceiver != null) {
            this.unregisterReceiver(networkChangeReceiver)
        }
    }

These are some suggestions to help avoid a NullPointerException after looking at your code.

Luca Pizzini
  • 1,805
  • 1
  • 3
  • 14