Activities not only present layouts to the user, but they can also provide data to other activities.
This is a companion discussion topic for the original entry at https://www.raywenderlich.com/4534-your-second-kotlin-android-app/lessons/23
Activities not only present layouts to the user, but they can also provide data to other activities.
Hey man, quick question. if the user switches between apps or even closes the app in Detail view how can we save the data? is there a preferred way of doing it like override fun onBackPressed() { in Android, is it won’t be called. thank you!
Hi cem. Normally you would do this in the Activity lifecycle onPause() method, and retrieve it in onResume().
hey shouldn’t it be data?.let {
listDataManager.saveList(it.getParcelableExtra(INTENT_LIST_KEY))
}
lines 98 and 99
thanks!
@bdmoakley Can you please help with this when you get a chance? Thank you - much appreciated! :]
How’s so? Would you mind clarifying your question?
Hey, I was wondering about smart casting because sometimes it doesn’t work (not in that case). This is why I thought it would require ‘it’ or for example {data →
I sometimes get Smart cast to xxx is impossible because ‘x’ is mutable property…
Hi standinga, thanks for the clarification! Not sure if I have the entire context of the question, but yes, using let
when the nullable is mutable is the way to go.
data?.let {
listDataManager.saveList(it.getParcelableExtra(INTENT_LIST_KEY))
}
This is equivalent to putting the nullable into a val
and then doing a null check that does a smart cast:
val dataValue = data
if (dataValue != null) {
listDataManager.saveList(dataValue.getParcelableExtra(INTENT_LIST_KEY))
}
I hope that answers your question. Let us know if not. Thanks!
Yes my confusion when asking question was about mutable nullable vs non-mutable (where smart cast is possible). It’s all clear now. BTW. Awesome course!!!
Thanks Joe! I appreciate the response. Cheers!
Hi, this was a great tutorial!
In the onActivityResult function in the main activity, you update the recycler view by creating a new recycler view adapter and passing to it the list read from the data manager. Isn’t this a very time consuming task? Because in the the first recycler view might have a long list of items and when we update one of the items, we re-read the whole list from the systems preferences. Wouldn’t it be better to just update the specific item in the list contained in the recycler view adapter? I hope I was clear with my question. Thank you!
@bdmoakley Can you please help with this when you get a chance? Thank you - much appreciated! :]