Skip to content

Commit

Permalink
Merge pull request #40 from touchapp/2U/igor/illegal_state_crash
Browse files Browse the repository at this point in the history
fix: ignore IllegalStateException when fragment transaction fails
  • Loading branch information
farhan-arshad-dev authored Aug 26, 2024
2 parents 9302070 + 84f5774 commit c0cd6de
Showing 1 changed file with 54 additions and 26 deletions.
80 changes: 54 additions & 26 deletions app/src/main/java/org/openedx/app/AppRouter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,14 @@ class AppRouter : AuthRouter, DiscoveryRouter, DashboardRouter, CourseRouter, Di
infoType: String?,
openTab: String
) {
fm.popBackStack()
fm.beginTransaction()
.replace(R.id.container, MainFragment.newInstance(courseId, infoType, openTab))
.commit()
try {
fm.popBackStack()
fm.beginTransaction()
.replace(R.id.container, MainFragment.newInstance(courseId, infoType, openTab))
.commit()
} catch (e: Exception) {
e.printStackTrace()
}
}

override fun navigateToSignIn(fm: FragmentManager, courseId: String?, infoType: String?) {
Expand Down Expand Up @@ -100,18 +104,26 @@ class AppRouter : AuthRouter, DiscoveryRouter, DashboardRouter, CourseRouter, Di
}

override fun navigateToWhatsNew(fm: FragmentManager, courseId: String?, infoType: String?) {
fm.popBackStack()
fm.beginTransaction()
.replace(R.id.container, WhatsNewFragment.newInstance(courseId, infoType))
.commit()
try {
fm.popBackStack()
fm.beginTransaction()
.replace(R.id.container, WhatsNewFragment.newInstance(courseId, infoType))
.commit()
} catch (e: Exception) {
e.printStackTrace()
}
}

override fun clearBackStack(fm: FragmentManager) {
fm.apply {
for (fragment in fragments) {
beginTransaction().remove(fragment).commit()
try {
for (fragment in fragments) {
beginTransaction().remove(fragment).commit()
}
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
} catch (e: Exception) {
e.printStackTrace()
}
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}
}
//endregion
Expand Down Expand Up @@ -395,9 +407,13 @@ class AppRouter : AuthRouter, DiscoveryRouter, DashboardRouter, CourseRouter, Di
}

override fun navigateToDiscover(fm: FragmentManager) {
fm.beginTransaction()
.replace(R.id.container, MainFragment.newInstance("", "", "DISCOVER"))
.commit()
try {
fm.beginTransaction()
.replace(R.id.container, MainFragment.newInstance("", "", "DISCOVER"))
.commit()
} catch (e: Exception) {
e.printStackTrace()
}
}

override fun navigateToWebContent(fm: FragmentManager, title: String, url: String) {
Expand All @@ -421,29 +437,41 @@ class AppRouter : AuthRouter, DiscoveryRouter, DashboardRouter, CourseRouter, Di
}

private fun replaceFragmentWithBackStack(fm: FragmentManager, fragment: Fragment) {
fm.beginTransaction()
.replace(R.id.container, fragment, fragment.javaClass.simpleName)
.addToBackStack(fragment.javaClass.simpleName)
.commit()
try {
fm.beginTransaction()
.replace(R.id.container, fragment, fragment.javaClass.simpleName)
.addToBackStack(fragment.javaClass.simpleName)
.commit()
} catch (e: Exception) {
e.printStackTrace()
}
}

private fun replaceFragment(
fm: FragmentManager,
fragment: Fragment,
transaction: Int = FragmentTransaction.TRANSIT_NONE,
) {
fm.beginTransaction()
.setTransition(transaction)
.replace(R.id.container, fragment, fragment.javaClass.simpleName)
.commit()
try {
fm.beginTransaction()
.setTransition(transaction)
.replace(R.id.container, fragment, fragment.javaClass.simpleName)
.commit()
} catch (e: Exception) {
e.printStackTrace()
}
}

//App upgrade
override fun navigateToUserProfile(fm: FragmentManager) {
fm.popBackStack()
fm.beginTransaction()
.replace(R.id.container, ProfileFragment())
.commit()
try {
fm.popBackStack()
fm.beginTransaction()
.replace(R.id.container, ProfileFragment())
.commit()
} catch (e: Exception) {
e.printStackTrace()
}
}
//endregion
}

0 comments on commit c0cd6de

Please sign in to comment.