diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/activities/MainActivity.kt b/app/src/main/java/com/javinator9889/handwashingreminder/activities/MainActivity.kt index b2a1b8a..1219b03 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/activities/MainActivity.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/activities/MainActivity.kt @@ -125,9 +125,14 @@ class MainActivity : ActionBarBase(), menu.selectedItemId = R.id.diseases onNavigationItemSelected(menu.menu.findItem(R.id.diseases)) } else { - if (activeFragment == R.id.diseases) + if (activeFragment == R.id.diseases) { + with(fragments[activeFragment].get()!! as DiseasesFragment) { + onBackPressed() + } + fragments.clear() super.onBackPressed() - else { + finish() + } else { val washingHandsFragment = fragments[activeFragment].get() ?: createFragmentForId(R.id.handwashing) as WashingHandsFragment diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/diseases/DiseasesFragment.kt b/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/diseases/DiseasesFragment.kt index a396383..4284573 100644 --- a/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/diseases/DiseasesFragment.kt +++ b/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/diseases/DiseasesFragment.kt @@ -43,6 +43,7 @@ import com.mikepenz.fastadapter.listeners.ClickEventHook import kotlinx.android.synthetic.main.diseases_list.* import kotlinx.android.synthetic.main.diseases_list.view.* import kotlinx.coroutines.launch +import timber.log.Timber class DiseasesFragment : BaseFragmentView() { override val layoutId: Int = R.layout.diseases_list @@ -93,6 +94,23 @@ class DiseasesFragment : BaseFragmentView() { adapter = fastAdapter } fastAdapter.addEventHook(DiseaseClickEventHook()) + fastAdapter.withSavedInstanceState(savedInstanceState) + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + fastAdapter.saveInstanceState(outState) + } + + fun onBackPressed() { + try { + diseasesContainer.adapter = null + diseasesAdapter.clear() + } catch (e: Exception) { + Timber.w(e, "Exception when calling 'onBackPressed'") + } finally { + onDestroy() + } } private inner class DiseaseClickEventHook : ClickEventHook() {