diff --git a/app/src/main/java/com/itsaky/androidide/fragments/MainFragment.kt b/app/src/main/java/com/itsaky/androidide/fragments/MainFragment.kt index 9652391aa0..6074211296 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/MainFragment.kt +++ b/app/src/main/java/com/itsaky/androidide/fragments/MainFragment.kt @@ -55,7 +55,8 @@ class MainFragment : BaseFragment() { val actions = MainScreenAction.mainScreen().also { actions -> val onClick = { action: MainScreenAction, _: View -> - when (action.id) { + ifAttached { + when (action.id) { ACTION_CREATE_PROJECT -> showCreateProject() ACTION_OPEN_PROJECT -> showViewSavedProjects() ACTION_DELETE_PROJECT -> pickDirectoryForDeletion() @@ -77,10 +78,11 @@ class MainFragment : BaseFragment() { } startActivity(intent) } + } } } val onLongClick = { action: MainScreenAction, _: View -> - performOptionsMenuClick(action) + ifAttached { performOptionsMenuClick(action) } true } @@ -90,11 +92,13 @@ class MainFragment : BaseFragment() { if (action.id == MainScreenAction.ACTION_OPEN_TERMINAL) { action.onLongClick = { _: MainScreenAction, _: View -> - val intent = - Intent(requireActivity(), TerminalActivity::class.java).apply { - putExtra(TERMUX_ACTIVITY.EXTRA_FAILSAFE_SESSION, true) - } - startActivity(intent) + ifAttached { + val intent = + Intent(requireActivity(), TerminalActivity::class.java).apply { + putExtra(TERMUX_ACTIVITY.EXTRA_FAILSAFE_SESSION, true) + } + startActivity(intent) + } true } } @@ -103,17 +107,17 @@ class MainFragment : BaseFragment() { binding!!.actions.adapter = MainActionsListAdapter(actions) - binding!!.headerContainer?.setOnClickListener { openQuickstartPageAction() } + binding!!.headerContainer?.setOnClickListener { ifAttached { openQuickstartPageAction() } } binding!!.headerContainer?.setOnLongClickListener { - TooltipManager.showIdeCategoryTooltip(requireContext(), it, MAIN_GET_STARTED) + ifAttached { TooltipManager.showIdeCategoryTooltip(requireContext(), it, MAIN_GET_STARTED) } true } binding!!.greetingText.setOnLongClickListener { - TooltipManager.showIdeCategoryTooltip(requireContext(), it, MAIN_GET_STARTED) + ifAttached { TooltipManager.showIdeCategoryTooltip(requireContext(), it, MAIN_GET_STARTED) } true } - binding!!.greetingText.setOnClickListener { openQuickstartPageAction() } + binding!!.greetingText.setOnClickListener { ifAttached { openQuickstartPageAction() } } } private fun performOptionsMenuClick(action: MainScreenAction) { diff --git a/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt b/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt index c889132067..3afc3cd739 100755 --- a/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt +++ b/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt @@ -38,6 +38,12 @@ import com.itsaky.androidide.utils.FileUtil import com.itsaky.androidide.utils.flashError import java.io.File +inline fun Fragment.ifAttached(block: () -> Unit) { + if (isAdded && context != null) { + block() + } +} + open class BaseFragment @JvmOverloads constructor(