My Kotlin activity logic requires me passing a few ArrayList<String>
and ArrayList<Drawable>
variables between activities.
I tried the following approach:
val intent = Intent(this, ServicesActivity::class.java)
intent.putStringArrayListExtra("names", providerNamesArray)
intent.putStringArrayListExtra("emails", providerEmailsArray)
intent.putStringArrayListExtra("addresses", providerAddressesArray)
intent.putStringArrayListExtra("tags", providerTagsArray)
intent.putStringArrayListExtra("descriptions", providerDescriptionArray)
intent.putExtra("images", providerImageArray)
startActivity(intent)
Reading in other activity:
providerNamesArray = intent.extras?.getStringArrayList("names") as ArrayList<String>
providerEmailsArray = intent.getSerializableExtra("emails") as ArrayList<String>
providerAddressesArray = intent.getSerializableExtra("addresses") as ArrayList<String>
providerTagsArray = intent.getSerializableExtra("tags") as ArrayList<String>
providerDescriptionArray = intent.getSerializableExtra("descriptions") as ArrayList<String>
providerImageArray = intent.getSerializableExtra("images") as ArrayList<Drawable>
I used both intent.extras?.getStringArrayList
and getSerializableExtra
to see if there is any difference with resepct to the error I get. However, both give me the same error:
java.lang.NullPointerException: null cannot be cast to non-null type java.util.ArrayList<kotlin.String>{ kotlin.collections.TypeAliasesKt.ArrayList<kotlin.String> }
If I don't typecast using as ArrayList<>
while reading intent extras, the IDE throws the following error:
Type mismatch.
Required:
kotlin.collections.ArrayList<String> /* = java.util.ArrayList<String> */
Found:
java.util.ArrayList<String!>?
and suggests that I typecast.
How can/should I pass my data between activities without error?