Update ContactSelectionListFragment.kt

Manual loader destruction and logging for the loader callback activity check.
This commit is contained in:
Anton Chekulaev 2020-08-24 11:43:09 +10:00 committed by GitHub
parent 72999c7d12
commit 59b94a1744
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -55,6 +55,11 @@ class ContactSelectionListFragment : Fragment(), LoaderManager.LoaderCallbacks<L
super.onStart()
LoaderManager.getInstance(this).initLoader(0, null, this)
}
override fun onStop() {
super.onStop()
LoaderManager.getInstance(this).destroyLoader(0)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.contact_selection_list_fragment, container, false)
@ -92,8 +97,13 @@ class ContactSelectionListFragment : Fragment(), LoaderManager.LoaderCallbacks<L
update(listOf())
}
private fun update(items: List<ContactSelectionListItem>) {
if (activity?.isDestroyed == true) { return }
private fun update(items: List<ContactSelectionListItem>) {
if (activity?.isDestroyed == true) {
Log.e(ContactSelectionListFragment::class.java.name,
"Received a loader callback after the fragment was detached from an activity.",
IllegalStateException())
return
}
listAdapter.items = items
mainContentContainer.visibility = if (items.isEmpty()) View.GONE else View.VISIBLE
emptyStateContainer.visibility = if (items.isEmpty()) View.VISIBLE else View.GONE
@ -110,4 +120,4 @@ class ContactSelectionListFragment : Fragment(), LoaderManager.LoaderCallbacks<L
override fun onContactDeselected(contact: Recipient) {
onContactSelectedListener?.onContactDeselected(contact.address.serialize())
}
}
}